我的for循环跳到要进入的二年级,我无法弄清楚为什么会发生这种情况。输出如下:
输入成绩1:输入成绩2:
public static void main(String args[]){
Scanner inputReader = new Scanner(System.in);
System.out.print("Would you like to input grades?: ");
String input = inputReader.next();
if (input.equals("y")){
String[] grades =new String[2];
for (int counter = 0; counter < grades.length; counter++){
System.out.print("Type in Grade Number " + (counter + 1) + ": ");
grades[counter] = inputReader.nextLine();
}
}
}
答案 0 :(得分:2)
next()
读取一个单词,而不是整行,并且它不会丢弃该单词之后的行,因此当您键入名字时,扫描程序仍在等待消耗其余部分的理由线。只有当你第一次调用nextLine()时它才会这样做(我假设该行的其余部分是空白的)
将您的代码更改为
String lastName = inputReader.nextLine(); // read the whole line, not just a word
System.out.print("Student First Name: ");
String firstName = inputReader.nextLine();
答案 1 :(得分:1)
之后
String firstName = inputReader.next();
您必须致电nextLine()
。实际上,next()
不会消耗EOL,因此当您在循环的第一次迭代中调用nextLine()
时,它会立即在第一个名称后使用EOL。