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

在我的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新手而且我很困惑。 我知道这最终会变得非常简单和愚蠢。 提前感谢您的时间。

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

所以当

 int studentNoParameter = in.nextInt(); 

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

 in.nextLine(); 

在int之后继续读取行的其余部分,这是空的,它遇到’\ n’并终止。