본문 바로가기
Programming/Java * Spring

[Java] 01. nextInt(), nextDouble() 뒤에 nextLine() 사용

by 고막고막 2019. 3. 13.

nextLine() 사용시 주의사항

nextInt(), nextDouble() 같은 메서드를 사용한 이후 String을 입력받기 위해 nextLine()을 사용하면 

버퍼에 남아있는 \n(Enter값)을 읽어들이기 때문에 nextLine() 메서드가 바로 리턴해버린다.

그러므로 nextLine()을 호출하기 전에 nextLine()을 한번 써주면

버퍼에 있는 \n 읽어버리므로 그 다음 문자열이 잘 읽힌다.

수정 전

op = sc.nextLine(); 에서 \n을 읽어들여 연산자가 입력되지 않고 바로 리턴함.

Scanner sc = new Scanner(System.in);
double num0=0, num1=0, result=0;
String op="";

System.out.print("1번째 숫자 입력: ");
num0 = sc.nextDouble();
System.out.print("2번째 숫자 입력: ");
num1 = sc.nextDouble(); 
System.out.print("연산자 입력: ");
op = sc.nextLine();

수정 후

\n제거를 위해 double로 직접 받지 않고 String temp로 값을 받은 다음 Double.parseDouble를 사용해 double로 변환해 준다.

System.out.print("1번째 숫자 입력: ");
String temp = sc.next();
num0=Double.parseDouble(temp);
System.out.print("2번째 숫자 입력: ");
temp = sc.next();
num1=Double.parseDouble(temp);
System.out.print("연산자 입력: ");
op = sc.next();