我想做的是允许用户输入名字和姓氏。允许用户输入名字,没有任何问题,但是一旦按下空格并输入姓氏,就会出现标题中提到的错误。
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int choice,
String name, stuNum;
do
{
System.out.println("");
System.out.println("Student Grade System");
System.out.println("----------------------\n");
System.out.println(" 1) Enter student details");
System.out.println(" 2) Display student grades");
System.out.println(" 3) Display student statistics");
System.out.println(" 4) Display full transcript");
System.out.println(" 0) Exit System\n");
System.out.print("Select an option [0-4] >> ");
choice = sc.nextInt();
System.out.println("");
switch(choice)
{
case 1:
System.out.println("Entering Student Details");
System.out.println("------------------------");
System.out.print(" Student name: ");
name = sc.next(); //somewhere here it messes up
System.out.print(" Student number: ");
stuNum = sc.next();
}
}while(choice !=0);
}
这是我的代码的最低限度,因为我刚刚开始编写它,但这个问题阻止了我进一步编写。我已经尝试过使用 sc.nextLine();并将变量 StuNum 更改为 int 变量。两者都不起作用。它给出的完整错误如下:
java.util.InputMismatchException
在 java.util.Scanner.throwFor(Scanner.java:840)
在 java.util.Scanner.next(Scanner.java:1461)
在 java.util.Scanner.nextInt(Scanner.java:2091)
在 java.util.Scanner.nextInt(Scanner.java:2050)
在 Project.main(Project.java:40)
最佳答案
使用 next() 只会返回空格之前的内容。这意味着它不会消耗空格。但是 nextLine() 在返回当前行后会自动向下移动扫描仪。 因此,只需在代码中将 next() 替换为 nextline() 即可。
关于Java - java.util.InputMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719830/