본문 바로가기
미니 프로젝트

계산기 만들기 - switch, do-while, ArrayList

by shyun00 2023. 3. 11.

사용자로부터 두개의 숫자와 한개의 연산자를 입력받아 결과를 double 형으로 출력하는 간단한 계산기를 만들어보았다.

 

<주요 기능>

1. 두개의 숫자와 연산자를 차례로 입력받음

2. 잘못된 연산자를 입력받을 경우 잘못된 연산자임을 알려주고 다시 입력하도록 알림

  -> 연산자를 요소로 갖는  ArrayList를 정의하고 입력한 값이 포함되어있지 않으면 오류 코드 출력 ( if 문을 사용한것보다 간결해짐)

3. 결과가 출력되고나면 계산을 계속할지 종료할지 물어보고 계산의 처음으로 돌아가거나 계산을 종료함

  -> do-while문 사용

 

import java.util.Arrays;
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        System.out.println("===Java Calculator===");
        Scanner scanner = new Scanner(System.in);
        double num1;
        double num2;
        String howto;
        int endOption;

        do {
            System.out.println("계산을 시작합니다.");

            System.out.println("첫번째 숫자를 입력해주세요.");
            num1 = scanner.nextDouble();
            System.out.println("두번째 숫자를 입력해주세요.");
            num2 = scanner.nextDouble();
            System.out.println("연산자를 입력해주세요.");
            howto = scanner.next();
            howto = getHowTo(scanner, howto);

            switch (howto) {
                case "+":
                    System.out.printf("연산 결과는 %f입니다.\n", num1 + num2);
                    break;
                case "-":
                    System.out.printf("연산 결과는 %f입니다.\n", num1 - num2);
                    break;
                case "/":
                    if (num2 == 0) {
                        System.out.println("0으로는 나눌 수 없습니다.");
                    } else {
                        System.out.printf("연산 결과는 %f입니다.\n", num1 / num2);
                    }
                    break;
                case "*":
                    System.out.printf("연산 결과는 %f입니다.\n", num1 * num2);
                    break;
            }
            System.out.println("계산을 계속 하시려면 [1]을, 종료하시려면 [0]을 압력해주세요.");
            endOption = scanner.nextInt();
        }
        while (endOption == 1);

        System.out.println("계산기를 종료합니다.");

    }

    private static String getHowTo(Scanner scanner, String howto) {
        String[] operators = {"+", "-", "/", "*"};
        while (!Arrays.asList(operators).contains(howto)) {  // ArrayList를 사용해 확인
            System.out.println("잘못된 연산자입니다. 올바른 연산자를 입력해주세요.");
            System.out.println("연산자를 입력해주세요.");
            howto = scanner.next();
        }

//        if (!howto.equals("+") && !howto.equals("/") && !howto.equals("*") && !howto.equals("%")) {
//            do {
//                System.out.println("잘못된 연산자입니다. 올바른 연산자를 입력해주세요.");
//                System.out.println("연산자를 입력해주세요.");
//                howto = scanner.next();
//            }
//            while (!howto.equals("+") && !howto.equals("/") && !howto.equals("*") && !howto.equals("%"));
//        }
        return howto;
    }
}