2017-04-26 8 views
0
System.out.println("Enter guest surName"); 
String roomName = input.next(); 
int num = input.nextInt(); 

예를 들어 "Michael Jackson"을 입력하면이 오류가 발생합니다.사용자가 스캐너의 next()에 대해 두 단어를 입력하면 두 번째 단어가 다음에 오는 nextInt() 메서드로 전송되어 inputMismatchException이 발생합니다.

Enter guest surName 
Michael Jackson 
Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at java.util.Scanner.nextInt(Unknown Source) 
    at test4.Demo.main(Demo.java:13) 

두 번째 단어가 nextInt() 메서드에 전달 되었기 때문에 오류가 발생했음을 이해합니다. 하지만 어떻게 해결해야할지 모르겠습니다.

그리고 나머지 프로그램의 특성 때문에 nextLine()을 사용할 수 없습니다.

+2

이 왜 다음 줄을 사용할 수 없습니다 – matt

답변

2

당신은 next 대신 nextLine하고 싶지 : 당신은 스캐너 객체의 구분 기호를 변경할 수 String roomName = input.nextLine();

Scanner input= new Scanner(System.in); 
System.out.println("Enter guest surName"); 
String roomName = input.nextLine(); 
int num = input.nextInt(); 
0

대신 String roomName = input.next(); 사용. 기본값은 공백입니다.

input.useDelimiter("\n"); 

예를 들어, 줄이 끝날 때까지 기다립니다. 그리고 나서 next()를 사용하여 입력을 제대로 잡을 수 있습니다.

다음 줄을 사용할 수 없으면 입력 한 후에 구분 기호를 공백으로 다시 변경해야합니다. 내가 모르는 불편 함을 피하려면.

import java.util.Scanner; 
class Test{ 

public static void main (String args[]){ 

Scanner input= new Scanner(System.in); 
System.out.println("Enter guest surName"); 
String roomName = input.next(); 
System.out.println("roomName ="+roomName); 

String num = input.nextLine(); 
System.out.println("num ="+num); 

} 
} 
3

doc here

String roomName = input.nextLine(); 

System.out.println("Enter guest number"); 
int num = input.nextInt(); 
0

아래 코드로 시도

? 표시된 스 니펫에 차이가 없지만 더 이상 입력 오류가 발생하지 않습니다.