본문 바로가기
Java

[Java 기초] 계산기

by jphwany 2022. 5. 23.

반복문을 활용한 간단한 계산기 제작

import java.util.Scanner;

public class Calculator_report {
    public static void main(String[] args) {
        System.out.println("===Java Calculator===");

        Scanner input = new Scanner(System.in);

        char end = 0;


        while(end != 'q') {
            try {

                System.out.println("첫 번째 수 입력");
                double num1 = input.nextDouble();

                System.out.println("연산자 입력");
                char operator = input.next().charAt(0);

                System.out.println("두 번째 수 입력");
                double num2 = input.nextDouble();

                System.out.println("연산 결과");
                double result;

                switch (operator) {
                    case '+':
                        result = num1 + num2;
                        System.out.println(num1 + " + " + num2 + " = " + result);
                        break;

                    case '-':
                        result = num1 - num2;
                        System.out.println(num1 + " - " + num2 + " = " + result);
                        break;

                    case '*':
                        result = num1 * num2;
                        System.out.println(num1 + " * " + num2 + " = " + result);
                        break;

                    case '/':
                        result = num1 / num2;
                        System.out.println(num1 + " / " + num2 + " = " + result);
                        break;

                    default:
                        throw new Exception();
                }
                System.out.println(result);
                System.out.println("종료하려면 'q', 계속하려면 아무거나 입력 요망");
                end = input.next().charAt(0);
            }
            catch (Exception e){
                e.printStackTrace();
                System.out.println("잘못된 입력! 재입력 요청.");
                throw e;
        }
            finally {
                input.nextLine();
                continue;
            }
        }
    }
}

여러 방법이 있었겠지만 

계산기를 한 번 쓰고 끝나지 않게 while문을 사용,
switch 문으로 조건에 따라 콘솔 출력,

그리고
try catch 라는 배우지 않은 내용을 가져와서 적용시켜보았다

코드 흐름은 이렇다

Scanner 메소드를 활용하기 위해 import
Scanner 콘솔 입력창을 만들고
while 반복을 끝내는 트리거로써 end 라는 문자 타입을 0으로 초기화해주고
while 조건으로 end에 q를 입력할 때까지 반복을 설정했다

여기서 try catch문을 사용했는데
하는 역할이 뭐냐면

예외 처리다

try문 안에서 예외가 발생한 경우에 catch(Exception e)로 빠져서 그 안의 실행문을 실행한다

그리고 마지막 finally 블럭은 try catch문과 함께 예외 발생 여부 상관 없이 "항상" 실행되어야 할 코드를 적는 것

계속해서 코드 흐름을 보면

try 안에서 시스템 콘솔 출력과 입력을 계산기 구조에 맞게 만든다

첫 번째 수는 double 타입으로 콘솔 입력창 생성
연산자는 char 타입으로 콘솔 입력창 생성
두 번째 수는 double 타입으로 콘솔 입력창 생성
연산 결과는 double 타입 result라는 변수로 선언

그 다음 switch문으로 조건(case)에 따라 연산결과를 출력하는 구조를 만든다

default를 사용해서 
이것도 저것도 아닌 입력 값이 들어왔을 경우에는 Exception()으로 집어 던져 
예외 처리 문을 실행한다

예외 처리로 가지 않는다면
시스템 콘솔, 연산결과를 출력하고
종료할지 말지 결정하는 출력문을 만들고

while문 트리거인 end 콘솔 입력창을 만든다

q를 눌렀을 때 while 문이 종료되게끔 말이다 

경우의 수는 3가지이다

1. 그냥 q를 눌러서 종료
2. 아무거나 입력해서 반복
3. catch문에서 아까 default에서 집어던졌던 Exception() (예외처리)

printStackTrace() 는 에러 발생 포인트를 찾아서 단계별로 에러 출력하는 메소드인데

잘못된 입력이라는 콘솔 출력문과 함께 finally 블럭 안에 있는 continue로 다시

while문으로 다시 돌아가는 구조다


예외처리가 발생하는 경우는 이런 출력이 나온다

연산자를 올바르지 않게 입력을 해버린 탓에
default문에서 Exception으로 던져지고

catch문을 통해 잘못된 입력임을 알려주는 콘솔이 출력된다

그리고는 다시 while문 초기로 돌아간 모습을 확인 할 수 있다

댓글