Search

계산기 만들기

대분류
Java
날짜
2024/07/16

코드

메소드와 배열을 쓰지 못해서 아래와 같이 코드를 작성하였습니다.
import java.io.*; public class Calculator { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static final String FIRST_NUMBER = "첫번째 정수: "; static final String SECOND_NUMBER = "두번째 정수: "; static final String OPERATOR = "연산자(+, -, *, /, %): "; static final String WARNING1 = "0 으로 나누거나 나눈 나머지를 구할 수 없습니다."; static final String WARNING2 = "y, n 중 하나만 입력해주세요."; static final String WARNING3 = "+, -, *, /, % 중 하나를 입력해주세요."; static final String ASK = "계산을 계속 하시겠습니까?(y/n) "; static final String OFF = "계산을 종료 합니다."; static final String LINE = "============================================================================"; static int a; static char operator; static char check; static int b; static int answer; public static void main(String[] args) throws IOException { while(true) { System.out.println(LINE); System.out.print(FIRST_NUMBER); a = Integer.parseInt(br.readLine()); System.out.print(OPERATOR); operator = br.readLine().charAt(0); while (operator != '+' && operator != '-' && operator != '*' && operator != '/' && operator != '%') { // 연산자 예외처리 System.out.println(WARNING3); operator = br.readLine().charAt(0); } System.out.print(SECOND_NUMBER); b = Integer.parseInt(br.readLine()); if (b == 0 && (operator == '/' || operator == '%')) { // / by zero 예외처리 System.out.println(WARNING1); System.out.print(ASK); check = br.readLine().charAt(0); if (check == 'n') break; else if (check == 'y') continue; else System.out.println(WARNING2); continue; } if (operator == '+') answer = a + b; else if (operator == '-') answer = a - b; else if (operator == '*') answer = a * b; else if (operator == '/') answer = a / b; else if (operator == '%') answer = a % b; System.out.println(LINE); System.out.println(a + " " + operator + " "+ b + " = " + (answer)); System.out.println(LINE); System.out.print(ASK); check = br.readLine().charAt(0); if (check != 'n' && check != 'y') { while (true) { if (check == 'n' || check == 'y') break; else System.out.println(WARNING2); System.out.println(LINE); System.out.print(ASK); check = br.readLine().charAt(0); } } if (check == 'n') { System.out.println(LINE); System.out.println(OFF); System.out.println(LINE); break; } } } }
Java
복사

결과

각종 예외를 처리해보았습니다.
============================================================================ 첫번째 정수: 1 연산자(+, -, *, /, %): / 두번째 정수: 2 ============================================================================ 1 / 2 = 0 ============================================================================ 계산을 계속 하시겠습니까?(y/n) y ============================================================================ 첫번째 정수: 1 연산자(+, -, *, /, %): / 두번째 정수: 0 ============================================================================ 0 으로 나누거나 나눈 나머지를 구할 수 없습니다. 계산을 계속 하시겠습니까?(y/n) o y, n 중 하나만 입력해주세요. ============================================================================ 첫번째 정수: 1 연산자(+, -, *, /, %): + 두번째 정수: 3 ============================================================================ 1 + 3 = 4 ============================================================================ 계산을 계속 하시겠습니까?(y/n) n ============================================================================ 계산을 종료 합니다. ============================================================================
Plain Text
복사