01. 목표 

더보기

01.1

이번에서는 산술연산 기능을 구현합니다.

 

01.2

이전 포스트에서 작업했던 Calculator 예제를 이어갑니다.

이전 포스트 작업물이 없다면, Calculator 예제를 다운받고 확인합니다.

 

5.3.1 Calculator 준비 예제.zip
0.23MB

 

 

더보기

02.1 사칙연산(+, -, *, /) 식별을 위한 enum 자료형 만들기

 

    public enum SelectedOperator
    {
        Addition,
        Subtraction,
        Multipliction,
        Division
    }

 

 

02.2 사칙연산(+, -, *, /) 로직 만들기

 public class SimpleMath
 {
     public static double Add(double n1, double n2) { return n1 + n2; }
     public static double Subtraction(double n1, double n2) { return n1 - n2; }
     public static double Multiply(double n1, double n2) { return n1 * n2; }
     public static double Divide(double n1, double n2) { return n1 / n2; }
 }

 

 

02.3 피연산자 값과, 사칙연산(+, -, *, /) 데이터 저장시키기

 

// 사칙 연산 버튼 누르기 전에 입력된 숫자를 lastNumber에 저장한다.
double lastNumber, result;
// 어떤 사칙 연산 버튼이 눌러졌는지 저장한다.
private SelectedOperator selectedOperator;

private void OperationButton_Click(object sender, RoutedEventArgs e)
{
    // 사칙연산 버튼을 누르면, 이전에 입력된 숫자는 lastNumber 변수에 저장되고
    if (double.TryParse(resultLabel.Content.ToString(), out lastNumber))
    {
        // 레이블엔 0을 출력한다.
        resultLabel.Content = "0";
    }
    // 그리고 selectedOperator 변수에, 어떤 사칙연산 버튼이 입력되었는지 저장한다.
    if (sender == plusButton)
        selectedOperator = SelectedOperator.Addition;
    if (sender == minusButton)
        selectedOperator = SelectedOperator.Subtraction;
    if (sender == multiplicationButton)
        selectedOperator = SelectedOperator.Multipliction;
    if (sender == devideButton)
        selectedOperator = SelectedOperator.Division;
}

 

  

 

02.4 계산 결과 로직 구현

private void EqualButton_Click(object sender, RoutedEventArgs e)
{
    // 마지막 피연산자(입력 숫자)를 newNumber 변수에 저장하고
    if (double.TryParse(resultLabel.Content.ToString(), out double newNumber))
    {
        // 이전에 입력받은 연산자를 식별하여, 
        switch (selectedOperator)
        {
            // 해당 연산자 사칙연산 로직이 실행되도록 분기한다.
            case SelectedOperator.Addition:
                result = SimpleMath.Add(lastNumber, newNumber);
                break;
            case SelectedOperator.Subtraction:
                result = SimpleMath.Subtraction(lastNumber, newNumber);
                break;
            case SelectedOperator.Multipliction:
                result = SimpleMath.Multiply(lastNumber, newNumber);
                break;
            case SelectedOperator.Division:
                result = SimpleMath.Divide(lastNumber, newNumber);
                break;
        }
    }
    resultLabel.Content = result.ToString();
}

 

3. 실행 결과 확인