(Java)nextLine()在运行时跳过,同时在之前工作

时间:2011-12-09 05:25:28

标签: java

在我的java程序的一部分中,我为用户读取了一系列输入。

Scanner in = new Scanner(System.in);
System.out.println();
System.out.print("Enter student name: ");
String nameParameter = in.nextLine();
System.out.print("Enter student number: ");
int studentNoParameter = in.nextInt();
System.out.print("Enter subject: ");
String subjectParameter = in.nextLine();
System.out.print("Enter level: ");
int levelParameter = in.nextInt();
int[] resultsParameter;
resultsParameter = new int[3];
System.out.println("Enter results (0 if not taken yet)...");
System.out.print("First year: ");
resultsParameter[0] = in.nextInt();
System.out.print("Second year: ");
resultsParameter[1] = in.nextInt();
System.out.print("Third year: ");
resultsParameter[2] = in.nextInt();
System.out.println();

该程序编译,但行:

String subjectParameter = in.nextLine();
提示输入Subject后,

在运行时似乎被跳过。

而不是我的输出:

输入主题:[用户输入]

输入等级:[用户输入]

它出现为:

输入主题:输入等级:[用户输入]

以下输入分配给levelParameter,如果输入的内容不是整数,则会产生错误,因此似乎只是跳过了代码行。

我非常喜欢java新手而且我很困惑。我知道这最终会变得非常简单和愚蠢。提前感谢您的时间。

1 个答案:

答案 0 :(得分:3)

那是因为在读取int后,该行的其余部分(为空)仍然未读,下一次读取nextline()的调用将读取空行。

所以当

int studentNoParameter = in.nextInt(); 
执行

,输入int并按Enter键,这将创建一个'\ n'作为输入。 下一个电话:

in.nextLine(); 

继续读取int之后的其余行,这是空的,遇到'\ n'并终止。