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

例如,當我輸入「Michael Jackson的」我得到這個誤差的nextInt()方法。如果用戶輸入用於掃描儀的next()兩個單詞,第二個字被轉移到隨後引起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

你想幹什麼nextLine而不是nextdoc here

String roomName = input.nextLine(); 

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

,而不是String roomName = input.next();使用String roomName = input.nextLine();

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

你可以改變掃描對象的分隔符。默認爲空白

input.useDelimiter("\n"); 

例如,這將一直等到行結束。 然後你可以使用next()來正確捕捉輸入。

如果你不能使用下一行(),你應該在輸入後把分隔符改回空格。爲了避免我不知道的不便之處。

0

嘗試用下面的代碼:

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); 

} 
}