(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’并终止。