트러블슈팅

[Java] Scanner 사용 시 nextInt(); 주의점!

chungmani 2026. 6. 4. 18:06

 

 

간단한 계산기 만드는 과제 진행 중 다음과 같은 에러를 만났다.

부끄..

사칙연산 기호를 입력해야하는데, 입력하기 전에 번째 숫자를 입력하라는게 바로 나온것임 ㅠㅠ

 

 

// num1, num2, 사칙연산 입력받기
System.out.print("첫번째 숫자를 입력하세요: ");
num1 = sc.nextInt();

System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");
String cal = sc.nextLine();

System.out.print("두번째 숫자를 입력하세요: ");
num2 = sc.nextInt();

 

이게 당시 내 코드였는데..처음에는 뭐가 잘못됐는지 몰랐다 ㅠㅠ

알고보니 nextInt()에 숫자 입력 후 뒤에 엔터는

\n 개행문자로 인식해 그 다음줄에 나오는 nextLine()에 \n가 입력되어버린것이다.

그래서 바로 다음 문장이 연속해서 나온것이었음.

 

 

// num1, num2, 사칙연산 입력받기
System.out.print("첫번째 숫자를 입력하세요: ");
num1 = sc.nextInt();
sc.nextLine(); // 엔터입력 방지

System.out.print("사칙연산 기호를 입력하세요(+, -, *, /): ");
String cal = sc.nextLine();

System.out.print("두번째 숫자를 입력하세요: ");
num2 = sc.nextInt();

 

nextInt() 바로 아래 줄에 nextLine()을 추가해줌으로써 \n 입력을 받아냄으로 해결!

근데 처음에 멍청하게 두번재 숫자 입력하는 곳에도 nextLine() 써줘야 하는데 깜빡하고 안 넣음..

 

 

 

멍청..

ㅋㅋㅋㅋ그래서 계산뒤에도 이렇게 나오는데, 처음에는 내가 안넣은줄 모르고..

반복문 코드 넣을 때 순서가 내가 이상하게 한건가..? 하면서 삽질함..

 

그래서 덕분에 이제는 상황에 따라 다를 순 있겠지만

nextInt() 다음에는 nextLine() 잊지 않을듯!!

 

 

 

참고로 아예 nextInt()를 안쓰고

int num = Integer.parseInt(sc.nextLine());

nextLine()만 쓰는 이런 방법도 있다고 한다.