Erste Benutzer-Eingabe mit Scanner

Ich versuche, ein scanner Eingabe in eine Schleife. Sobald der Benutzer will, zu beenden, kann er aus dieser Schleife. Ich habe versucht, viele verschiedene Möglichkeiten, es zu tun, aber es ist immer ein problem. Dies ist der code:

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]");
    }
}

Das problem mit dem code oben, das geschieht auch auf verschiedenen Methoden, die ich versuchte, ist, dass, wenn der Benutzer Arten Y, die Scanner überspringen der ersten Eingabe für Vorname,und springen auf den Nachnamen. Wenn der Benutzer Arten N wird die Wiedergabe beendet, korrekt. Kann mir jemand erklären, warum dies geschieht, und wie Sie zu überwinden mit Scanner Klasse?

p.s: etwas wie while(sc.nextLine().equals("Y")), wird die Schleife beendet, bevor die erste Eingabe vom Benutzer nach dem ersten Durchlauf der Schleife.

InformationsquelleAutor Giannis | 2012-10-21
Schreibe einen Kommentar