코드
•
메소드와 배열을 쓰지 못해서 아래와 같이 코드를 작성하였습니다.
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
복사