두 개의 정수를 입력 받고, 문자 혹은 문자열로 연산기호(+, -, *, /, %)를 입력 받아 연산의 수행 결과를 출력하시오.
첫 번째 정수 입력 : 5
두 번째 정수 입력 : 7
연산 기호 입력 : +
수행 결과 : 5 + 7 = 12
import java.util.*;
public class Main {
public static void main(String[] args) {
// 문제 2 두 정수와 연산자를 입력 받아 연산 결과 출력
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두 번째 정수 입력 : ");
int num2 = sc.nextInt();
System.out.print("연산 기호 입력 : ");
String op = sc.next();
sc.close();
int result = 0;
switch (op) {
case "+": result = num1 + num2; break;
case "-": result = num1 - num2; break;
case "*": result = num1 * num2; break;
case "/":
if (num2 != 0) result = num1 / num2;
else System.out.println("0으로 나눌 수 없습니다.");
break;
case "%": result = num1 % num2; break;
default:
System.out.println("입력하신 연산은 없습니다. 프로그램을 종료합니다.");
return;
}
System.out.println("수행 결과 : " + num1 + " " + op + " " + num2 + " = " + result);
}
}
next( )
: 문자 또는 문자열을 공백(띄어쓰기) 기준으로 한 단어 또는 한 문자씩 입력
nextLine( )
: 문자 또는 문장 한 라인 전체를 입력 (개행문자 기준)
'\n'을 포함하는 한 라인을 읽고 '\n'를 버린 나머지만 리턴
스캐너로 값을 입력 받게 되면 입력 버퍼에 값이 임시 저장된 후,
저장된 내용 중에서 정수, 실수, 문자, 문자열을 읽어오게 된다.
예) 123\n → 123
예) 123\n → 123\n
next( ), nextInt( ), nextDouble( )
등으로 값을 입력 받으면 띄어쓰기 또는 엔터 전까지의 값을 읽어들이면서 입력 버퍼 제일 앞에 \n이 남아있게 된다. 이 상태에서 nextLine( )
으로 문자열을 입력 받고자 하면, 입력 버퍼 제일 앞에 남아있는 \n을 먼저 읽어들이기 때문에 더 이상 값을 입력 받을 수 없다.
🧶 해결 방법 : next(), nextInt(), nextDouble()
등을 수행한 후
바로 아랫줄에 nextLine( )
을 한 번 더 수행하여 입력 버퍼에 남아있는 \n을 제거해준다!