import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("첫 번째 숫자를 입력하세요: ");
int num1 = sc.nextInt();
System.out.print("사칙연산 기호를 입력하세요( +, -, *, /): ");
char operator = sc.next().charAt(0); // charAt() String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환
System.out.print("두 번째 숫자를 입력하세요: ");
int num2 = sc.nextInt();
int result = 0;
switch (operator) {
case '+':
result = num1 + num2;
System.out.println("결과: " + result);
break;
case '-':
result = num1 - num2;
System.out.println("결과: " + result);
break;
case '*':
result = num1 * num2;
System.out.println("결과: " + result);
break;
case '/':
if (num2 == 0) {
System.out.println("나눗셈 연산에서 분모(두번째 정수)에 0이 입력될 수 없습니다.");
break; // 반복문 종료
}
result = num1 / num2;
System.out.println("결과: " + result);
break;
default:
System.out.println("정확한 기호만 사용해주세요.");
break;
}
sc.nextLine(); // 버퍼에 남은 개행문자 처리
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
String stop = sc.nextLine();
if (stop.equals("exit")) {
System.out.println("계산이 종료되었습니다.");
break;
}
}
}
}
클래스 없이 기본적인 연산을 수행할 수 있는 계산기를 만들던 중
"더 계산하시겠습니까? (exit 입력 시 종료)" 이후에 입력 값을 받아야 하는데 받지 않고 "첫 번째 숫자를 입력하세요: " 출력 값이 붙어서 나오는 현상을 발견
첫 번째 숫자를 입력하세요: 5
사칙연산 기호를 입력하세요( +, -, *, /): -
두 번째 숫자를 입력하세요: 3
결과: 2
더 계산하시겠습니까? (exit 입력 시 종료)
첫 번째 숫자를 입력하세요:
숫자 입력 후 nextLine()을 사용해 문자열을 입력받으려고 하면 이전 숫자 입력 후에 남아있던 개행문자가 문자열 입력을 방해하는 상황이 발생한다는 것을 알게되었다.
nextLine()을 호출해서 버퍼에 남은 개행문자를 처리해 주면 된다는 것을 알고 적용하였다.
sc.nextLine();
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
String stop = sc.nextLine();
개행문자를 처리하여 정상적으로 출력되게 하였다.

참고하기
charAt() String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환
3주차 강의를 뒤늦게 끝내서 Lv1만 제출할 수 있었다.. Lv2도 따로 시도해봐야겠다
'내배캠' 카테고리의 다른 글
| 팀 프로젝트 트러블슈팅 - 뉴스피드 프로젝트 (0) | 2024.11.21 |
|---|---|
| 개인과제 트러블슈팅 - 일정 관리 앱 Develop (0) | 2024.11.15 |
| 개인과제 트러블슈팅 - 일정 관리 앱 (0) | 2024.11.08 |
| 개인과제 트러블슈팅 - 숫자 야구 게임 (0) | 2024.10.25 |
| 팀 프로젝트 KTP 개인 회고 (0) | 2024.10.07 |