在我的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新手而且我很困惑。我知道这最终会变得非常简单和愚蠢。提前感谢您的时间。
答案 0 :(得分:3)
那是因为在读取int后,该行的其余部分(为空)仍然未读,下一次读取nextline()的调用将读取空行。
所以当
int studentNoParameter = in.nextInt();
执行,输入int并按Enter键,这将创建一个'\ n'作为输入。 下一个电话:
in.nextLine();
继续读取int之后的其余行,这是空的,遇到'\ n'并终止。