import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int result = 0;
boolean reVal = true;
while(reVal) {
Systehttp://m.out.print("계산할 첫번째 숫자를 입력하세요!");
int a = scan.nextInt();
Systehttp://m.out.print("계산할 두번째 숫자를 입력하세요!");
int b = scan.nextInt();
Systehttp://m.out.print("사칙연산 기호를 입력하세요!");
String c = scan.next();
char allSym = c.charAt(0);
switch (allSym) {
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
default:
System.out.println("기호를 잘 못 입력했습니다!!! 다시 입력하세요!!!");
break;
}
System.out.println("결과 : " + result);
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료) : ");
String rework = scan.next();
if(rework.equals("exit")) {
reVal = false;
}
}
}
}
1. 처음에는 while문의 반복 조건을 제어하기 위해 reVal 변수를 true로 초기화하고, 사용자가 'exit'을 입력하면 if문에서 false로 변경하여 반복을 종료하도록 구현하였다.
초기 코드에서는 문자열 비교를 위해 rework == "exit"를 사용했으나, 입력값이 'exit'임에도 반복문이 계속 실행되는 문제가 발생했다. 원인을 분석해보니 String은 객체이므로 == 연산자는 문자열의 내용이 아닌 객체의 참조값(메모리 주소)을 비교하고 있었다. 이로 인해 비교 결과가 항상 false를 반환했던 것이다.
이 문제는 문자열의 내용을 비교하는 equals() 메소드를 사용하여 해결하였다.
또한, 초기 코드에는 exit이 아닌 다른 값이 입력될 경우 reVal을 true로 설정하는 else 구문을 포함했었다. 하지만 reVal 변수가 이미 true로 초기화되어 있고, exit이 입력되지 않는 한 이 값이 변경되지 않으므로 else 구문은 불필요했다. 따라서 이 중복 코드를 제거하여 코드를 더 간결하게 수정하였다.
'TIL' 카테고리의 다른 글
JAVA 프로그래밍 기초 (0) | 2025.01.07 |
---|---|
[계산기 만들기] 계산기를 만들기 2일차 (0) | 2025.01.06 |
Java 향상된 for문과 알고리즘(최댓값 만들기) 오답 노트 (1) | 2025.01.02 |
Java의 계층 구조와 알고리즘(분수의 덧셈) 오답 노트 (0) | 2024.12.31 |
KPT 회고 (4MEN Mini Project)와 알고리즘(두 수의 나눗셈) 오답 노트 (0) | 2024.12.30 |