Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java switch~case 문으로 구현하는 간단한 계산기 프로그램

이 글에서는 switch~case 문을 활용해 간단한 사칙연산 계산기를 만드는 방법을 알아보겠습니다. switch 문은 주어진 표현식을 평가하고, 그 값이 일치하는 case 절을 찾아 해당 case에 연결된 문장들을 실행합니다.

구현할 산술 연산

이번 예제에서 수행할 연산은 다음과 같습니다.

  • 덧셈 (+)
  • 뺄셈 (-)
  • 곱셈 (*)
  • 나눗셈 (/)
  • 나눗셈의 몫 (Floor Division)
  • 나머지 (%)

입력 및 출력 예시

예를 들어 아래와 같은 입력이 주어졌다고 가정해 보겠습니다.

두 개의 입력값: 40.0과 12.0
연산자: %

이때 기대되는 출력 결과는 다음과 같습니다.

결과: 40.0 % 12.0 = 4.0

알고리즘

1단계 - 시작(START)
2단계 - my_input_1, my_input_2, my_result 세 개의 값을 선언하고, operator라는 문자형 변수를 선언한다.
3단계 - 사용자로부터 필요한 값을 입력받거나 값을 직접 정의한다.
4단계 - 'operator' 값을 조건으로 하는 case 문을 정의하여 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 처리한다.
5단계 - 연산자 값을 case 문에 전달하여 두 입력값 'my_input_1'과 'my_input_2' 사이의 산술 연산을 수행한다.
6단계 - 결과를 화면에 출력한다.
7단계 - 종료(STOP)

예제 1: 사용자 입력을 받는 경우

다음 예제에서는 사용자가 직접 값을 입력하는 방식으로 동작합니다. 콘솔에서 두 숫자와 연산자를 차례로 입력받은 후, switch 문으로 해당 연산을 수행합니다.

import java.util.Scanner;
public class OperatorSwitch {
   public static void main(String[] args) {
      char operator;
      Double my_input_1, my_input_2, my_result;
      System.out.println("필요한 패키지를 가져왔습니다");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("Scanner 객체가 생성되었습니다 ");
      System.out.println("첫 번째 숫자를 입력하세요");
      my_input_1 = my_scanner.nextDouble();
      System.out.println("두 번째 숫자를 입력하세요");
      my_input_2 = my_scanner.nextDouble();
      System.out.println("다음 연산자 중 하나를 입력하세요: +, -, *, /, %");
      operator = my_scanner.next().charAt(0);
      switch (operator) {
         case '+':
            my_result = my_input_1 + my_input_2;
            System.out.println(my_input_1 + " + " + my_input_2 + " = " + my_result);
            break;
         case '-':
            my_result = my_input_1 - my_input_2;
            System.out.println(my_input_1 + " - " + my_input_2 + " = " + my_result);
            break;
         case '*':
            my_result = my_input_1 * my_input_2;
            System.out.println(my_input_1 + " * " + my_input_2 + " = " + my_result);
            break;
         case '/':
            my_result = my_input_1 / my_input_2;
            System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
            break;
         case '%':
            my_result = my_input_1 % my_input_2;
            System.out.println(my_input_1 + " % " + my_input_2 + " = " + my_result);
            break;
         default:
            System.out.println("선택하신 연산자가 유효하지 않습니다");
            break;
      }
   }
}

출력 결과

필요한 패키지를 가져왔습니다
Scanner 객체가 생성되었습니다
첫 번째 숫자를 입력하세요
40
두 번째 숫자를 입력하세요
12
다음 연산자 중 하나를 입력하세요: +, -, *, /, %
%
40.0 % 12.0 = 4.0

예제 2: 값이 미리 정의된 경우

이번에는 사용자 입력 없이 두 숫자와 연산자가 코드 안에서 미리 정의되어 있으며, 그 값을 그대로 사용해 연산 결과를 콘솔에 출력합니다.

public class OperatorSwitch {
   public static void main(String[] args) {
      char operator;
      Double my_input_1, my_input_2, my_result;
      my_input_1 = 40.0;
      my_input_2 = 12.0;
      operator = '%';
      System.out.println("두 숫자는 각각 " +my_input_1 +"과 " +my_input_2 +"로 정의되었습니다");
      System.out.println("연산자는 " +operator +"로 정의되었습니다");
      switch (operator) {
         case '+':
            my_result = my_input_1 + my_input_2;
            System.out.println(my_input_1 + " + " + my_input_2 + " = " + my_result);
            break;
         case '-':
            my_result = my_input_1 - my_input_2;
            System.out.println(my_input_1 + " - " + my_input_2 + " = " + my_result);
            break;
         case '*':
            my_result = my_input_1 * my_input_2;
            System.out.println(my_input_1 + " * " + my_input_2 + " = " + my_result);
            break;
         case '/':
            my_result = my_input_1 / my_input_2;
            System.out.println(my_input_1 + " / " + my_input_2 + " = " + my_result);
            break;
         case '%':
            my_result = my_input_1 % my_input_2;
            System.out.println(my_input_1 + " % " + my_input_2 + " = " + my_result);
            break;
         default:
            System.out.println("선택하신 연산자가 유효하지 않습니다");
            break;
      }
   }
}

출력 결과

두 숫자는 각각 40.0과 12.0으로 정의되었습니다
연산자는 %로 정의되었습니다
40.0 % 12.0 = 4.0

마무리

switch~case 문을 사용하면 if~else 문을 여러 번 중첩하는 것보다 코드가 훨씬 깔끔하고 가독성이 좋아집니다. 각 case 뒤에 break 문을 반드시 작성해야 의도하지 않은 다음 case로 넘어가는 현상(fall-through)을 방지할 수 있다는 점도 기억해 두세요. 또한 default 절을 활용하면 유효하지 않은 연산자 입력에 대한 예외 처리까지 손쉽게 구현할 수 있습니다.