2017-04-26 40 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); 

} 
} 
相关问题