スキャナーにループで入力を取得させようとしています。ユーザーが終了したい場合は、このループを終了できます。私はそれを行うためにさまざまな方法を試しましたが、常にいくつかの問題があります。これはコードです:
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"))
ことをすると、ループの最初の実行後、ユーザーからの入力を取得する前にループが終了します。