我正在尝试让扫描仪循环输入。一旦用户想要完成,他可以退出这个循环。我尝试了许多不同的方法来做到这一点,但总是有一些问题。这是代码:
private void inputEntries() {
Scanner sc = new Scanner(System.in);
System.out.println("Continue?[Y/N]");
while (sc.hasNext() && (sc.nextLine().equalsIgnoreCase("y"))) {//change here
System.out.println("Enter first name");
String name = sc.nextLine();
System.out.println("Enter surname");
String surname = sc.nextLine();
System.out.println("Enter number");
int number = sc.nextInt();
Student student = new Student(name, surname, number);
students.add(student);
try {
addToFile(student);
} catch (Exception ex) {
Logger.getLogger(TextReader.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Continue?[Y/N]");
}
}
上面代码的问题,也发生在我尝试的不同方法上,是当用户键入Y时,Scanner
将跳过第一个输入的名字,并跳转到姓氏。如果用户键入N,则循环正确停止。有人可以解释发生这种情况的原因,以及如何使用Scanner
类来克服?
ps:执行类似while(sc.nextLine().equals("Y"))
, 的操作将导致循环在第一次运行循环后从用户获取输入之前终止。