如果用户为Scanner的next()输入两个单词,则第二个单词将被传送到nextInt()方法,该方法会导致inputMismatchException

时间:2017-04-26 07:38:20

标签: java string integer java.util.scanner user-input

System.out.println("Enter guest surName");
String roomName = input.next();
int num = input.nextInt();

例如,当我进入迈克尔杰克逊"我收到了这个错误。

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()。

4 个答案:

答案 0 :(得分:3)

您可以更改扫描仪对象的分隔符。默认为空格

input.useDelimiter("\n");

例如,这将等到线完成。 然后你可以使用next()来正确捕获输入。

如果你不能使用下一个Line(),你应该在输入后将分隔符更改回空格。为了避免任何我不知道的不便。

答案 1 :(得分:2)

您希望nextLine代替nextdoc here

String roomName = input.nextLine();

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

答案 2 :(得分: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 :(得分: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 );

}
}