본문 바로가기

C#

C#-WINFORM으로 계산기 만들기 중요한 예외처리 enum 사용법 알려드립니다.

반응형
using System;
using System.Diagnostics.Eventing.Reader;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public enum Season { spring, summer,fall,winter}
    //계산기 연산의 경우 4가지로 정해 져있기 때문에 enum을 쓰면 좋을거 같다
    public enum Operators {Add, Sub, Multi, Div}

        //인트형 데이터 타입인데.
        //우리가 스스로 타입을 정의할 수있다. 

    public partial class Calculator : Form
    {
        public int Result = 0;       
        public bool isNewNum = true;
        public Operators operators;
        public Calculator()
        {
            InitializeComponent(); 
            
        }

        
        //overloading
        public int Add(int num1, int num2)
        {  
            int sum = 0;
            sum = num1 + num2;
            return sum;
        }
        public float Add(float num1 , float num2)
        {
            float sum = num1 + num2;
            return sum;
        }
        public int Sub(int num1 ,int num2)
        {
            int sum = num1 - num2;
            return sum;
        }

        private void Numbtn1_Click(object sender, EventArgs e)
        {
            Button numbutton = (Button)sender;
            
            SetNum(numbutton.Text);    
        }

        
        public void SetNum(string num)
        {
                         //플러스 버튼 누르기 전 1이랑 후 1이랑 다르게
            if (isNewNum == true)//버튼이 눌러 졌을 때 새로운 넘버냐
            {
                NumScreen.Text = num;
                isNewNum = false;//여기가 중요하다 
            }
            else        //새로운 넘버가 아니라면
            {
                if (NumScreen.Text == "0")
                {
                    NumScreen.Text = num;
                }
                else
                {
                    NumScreen.Text = NumScreen.Text + num;
                }

            }
        }

        private void Plusbtn_Click(object sender, EventArgs e) // 이걸 누르면 연산이 되어야하니까~!
        {
            //예외 처리
            if (isNewNum == false) //연산자가 눌러지고 두번째 숫자가 있을때  연산을 합니다.
            {   //숫자의 완성 ! 
                int num = int.Parse(NumScreen.Text);
                //기존에 숫자 버튼을 눌러서 만들었던 스트링 숫자 값을 인트값으로 변수에 저장
                if (operators == Operators.Add)
                {
                    Result = Add(Result ,num);
                }
                else if (operators == Operators.Sub)
                {
                    Result = Sub(Result, num);
                }

                NumScreen.Text = Result.ToString(); //다시 스크린에 뿌린다 저장된 값을
                isNewNum = true; //연산자 입력뒤 새로운 숫자 입력
            }
            //새로운 숫자가 입력 되었던 안되었던 여기서 연산자를 저장한다.
            Button button = (Button)sender;
            //센더 값을 버튼 객체에 넣어서 조건문으로 구분
            if (button.Text=="+")
            {
                operators = Operators.Add;
            }
            else if (button.Text == "-")
            {
                operators = Operators.Sub;
            }
           
            
        }

        private void Clearbtn_Click(object sender, EventArgs e)
        {
            Result = 0;
            isNewNum = true;
            operators = Operators.Add;
            NumScreen.Text = "0";
        }
        //변수 = 0
        //연산자 = +
        //숫자 입력 
        //연산자 버튼 = 숫자완성, 변수와 숫를 저장된 연산자로 연산
    }
}

동일한 숫자를 반복적으로 입력했을 떄 !! 

 

연산자를 클리하면 기존 값이 변수에 저장되고 새로운 값의 입력이 시작된다.

= 버튼을 누르면 최종 값이 나타난다.

반응형