inblog logo
|
{CODE-RYU};
    C#

    [C#] 계산기 만들기 2 - 유효성 검사(Validation)

    류재성's avatar
    류재성
    Dec 28, 2024
    [C#] 계산기 만들기 2 - 유효성 검사(Validation)
    Contents
    1. 공백 문자 처리2. 공백 문자 처리3. 타입 변환이 되지 않는 경우
     
    💡
    프로그래밍에서 유효성 검사(Validation)는 입력된 데이터가 특정 조건이나 기준을 충족하는지 확인하는 과정이다. 유효성 검사는 사용자 입력의 정확성을 보장하고, 시스템 오류를 방지하며, 데이터 무결성을 유지하기 위해 매우 중요하다.

    1. 공백 문자 처리

     
    [C#] Window Forms Application 을 이용한 계산기 만들기 - {CODE-RYU};
    C#
    [C#] Window Forms Application 을 이용한 계산기 만들기 - {CODE-RYU};
    https://inblog.ai/coderyu1/c-window-forms-application-%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B3%84%EC%82%B0%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-38366?traffic_type=internal
    [C#] Window Forms Application 을 이용한 계산기 만들기 - {CODE-RYU};
     
    지난 블로그에서 간단한 계산기를 만들었다.
     
    notion image
     
    만약 텍스트박스에 숫자를 넣지 않고 ‘버튼’을 입력하면 어떻게 될까?
     
    notion image
     
    ‘The input string '' was not in a correct format’ 라는 오류가 발생하게 된다. 입력받은 값이 없기 때문에 문자열을 정수형으로 변환할 수 없다는 의미이다.
     
    using System; using System.Windows.Forms; namespace HelloCsharpWin { public partial class Calculator : Form { public Calculator() { InitializeComponent(); } private void HelloLabel_Click(object sender, EventArgs e) { int num1 = 1; int num2 = 2; int sum = 1 + 2; HelloLabel.Text = sum.ToString(); } private void btn1_Click(object sender, EventArgs e) { if (num1.Text == "" || num2.Text == "") { MessageBox.Show("텍스트박스에 숫자를 입력하세요."); return; // return 을 사용하면 아래 코드를 사용하고 바로 함수를 종료시킴. // 부모 클래스의 리턴타입이 void 면 return만 적으면 되고, int 타입 등 타입이 있다면 해당 타입의 결과를 리턴해야 함 } int number1 = Convert.ToInt32(num1.Text); // 텍스트박스로 입력받는 값은 String 값이기 때문에 Convert 함수를 사용해 형변환 int number2 = Convert.ToInt32(num2.Text); int sum = number1 + number2; //sum1.Text = Convert.ToString(sum); 동일 sum1.Text = sum.ToString(); } private int Add(int number1, int number2) { int sum = number1 + number2; return sum; } } }
     
    if문을 사용해 텍스트 박스에 값이 없을 경우에 대한 처리를 해준다.
    텍스트 박스 num1 와 num2 에 값이 입력되지 않으면 메세지 박스를 출력한다.
    메세지박스는 using System.Windows.Forms; 라는 네임스페이스를 정의하면 사용할 수 있는 함수이다.
    notion image
     
    프로그램을 실행 후 버튼을 누르면 메세지 박스가 출력된다.
     

    2. 공백 문자 처리

     
    💡
    만약 빈 문자(””)가 아니라 공백 문자(” ”)가 입력되면 어떨까? 공백 문자(” “)는 빈문자(””)와 다르게 인식하기 때문에 IF 조건문을 타지 않는다. 이때 String.IsNullOrWhiteSpace() 메서드를 사용한다. String.IsNullOrWhiteSpace() 메서드는 문자열이 공백 혹은 빈 문자열인 경우를 확인하는데 사용한다.
     
    using System; using System.Windows.Forms; namespace HelloCsharpWin { public partial class Calculator : Form { public Calculator() { InitializeComponent(); } private void HelloLabel_Click(object sender, EventArgs e) { int num1 = 1; int num2 = 2; int sum = 1 + 2; HelloLabel.Text = sum.ToString(); } private void btn1_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(num1.Text) || String.IsNullOrWhiteSpace(num2.Text)) { MessageBox.Show("텍스트박스에 숫자를 입력하세요."); return; // return 을 사용하면 아래 코드를 사용하고 바로 함수를 종료시킴. // 부모 클래스의 리턴타입이 void 면 return만 적으면 되고, int 타입 등 타입이 있다면 해당 타입의 결과를 리턴해야 함 } int number1 = Convert.ToInt32(num1.Text); // 텍스트박스로 입력받는 값은 String 값이기 때문에 Convert 함수를 사용해 형변환 int number2 = Convert.ToInt32(num2.Text); int sum = number1 + number2; //sum1.Text = Convert.ToString(sum); 동일 sum1.Text = sum.ToString(); } private int Add(int number1, int number2) { int sum = number1 + number2; return sum; } } }
     
    IF 조건문을 String.IsNullOrWhiteSpace 로 변환 후 프로그램을 실행한다.
     
    notion image
    notion image
     
    스페이스로 공백을 입력 후 버튼을 누르면 메세지 박스가 출력된다.
     

    3. 타입 변환이 되지 않는 경우

     
    💡
    만약 텍스트 박스에 숫자가 아니라 문자를 입력하면 어떻게 될까? INT 형으로 형 변환이 되지 않아 오류가 발생하게 될 것이다. 이때 int.TryParse() 라는 메서드를 사용한다.
     
    notion image
     
    int.TryParse() 는 위의 사진에서 확인할 수 있듯이, 두 개의 매개변수를 변수를 받고, bool 타입을 리턴한다. 즉 첫 번째 매개변수로 받은 값이 숫자로 변환이 가능하면,두 번째 매개변수에 넣으면서 true를 리턴하고, 만약 첫 번째 매개변수로 받은 값이 숫자로 변환이 되지 않으면 false 를 리턴한다.
     
    using System; using System.Windows.Forms; namespace HelloCsharpWin { public partial class Calculator : Form { public Calculator() { InitializeComponent(); } private void HelloLabel_Click(object sender, EventArgs e) { int num1 = 1; int num2 = 2; int sum = 1 + 2; HelloLabel.Text = sum.ToString(); } private void btn1_Click(object sender, EventArgs e) { int number1 = 0; // number1 와 number2를 0으로 선언 후 초기화한다. int number2 = 0; if (String.IsNullOrWhiteSpace(num1.Text) || String.IsNullOrWhiteSpace(num2.Text)) { MessageBox.Show("텍스트박스에 숫자를 입력하세요."); return; // return 을 사용하면 아래 코드를 사용하고 바로 함수를 종료시킴. // 부모 클래스의 리턴타입이 void 면 return만 적으면 되고, int 타입 등 타입이 있다면 해당 타입의 결과를 리턴해야 함 } if(int.TryParse(num1.Text, out number1) == false || int.TryParse(num2.Text, out number2) == false) { MessageBox.Show("텍스트 박스에는 숫자만 입력 가능합니다."); return; // return 을 사용하면 아래 코드를 사용하고 바로 함수를 종료시킴. } number1 = Convert.ToInt32(num1.Text); // 텍스트박스로 입력받는 값은 String 값이기 때문에 Convert 함수를 사용해 형변환 number2 = Convert.ToInt32(num2.Text); int sum = number1 + number2; //sum1.Text = Convert.ToString(sum); 동일 sum1.Text = sum.ToString(); } private int Add(int number1, int number2) { int sum = number1 + number2; return sum; } } }
     
    notion image
     
    프로그램 실행 시 문자를 입력하면 메세지 박스 창이 뜬다.
     
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog