My Student Records Programm fordert den Benutzer auf, den Vornamen des Schülers einmal in der do while-Schleife einzugeben. Der Benutzer hat die Möglichkeit, die gleichen Daten erneut einzugeben, indem er ja eingibt und die gleiche Frage "Vorname des Schülers eingeben" erscheint zweimal übereinander.Programm fragt die gleiche Antwort zweimal?
Ich habe Haltepunkte in diese While-Schleife eingefügt und sobald der Benutzer "Ja" am Ende der Do wählt, während es bis zur ersten Zeile in der ersten while-Schleife geht, dann die zweite Zeile, die dritte und wieder zurück wieder zum ersten, dann zum zweiten, zum dritten und bricht in die nächste while-Schleife ein und fragt nach dem Nachnamen der Schüler.
Warum spuckt mein Programm beim zweiten Mal der do while-Schleife die erste Frage zweimal hintereinander aus?
package assignment_3;
import java.util.Scanner;
/**
* @author Diego
*/
public class Demo {
public static void main (String args[]) {
//Instantiating new recordsObject
StudentRecords recordsObject = new StudentRecords();
String firstName = "";
String lastName = "";
String idNumber = "";
String major = "";
Scanner keyboard = new Scanner(System.in);
//Asking the user to enter the students' info
do {
while (firstName.isEmpty()) {
System.out.println("Enter student's first name: ");
firstName = keyboard.nextLine();
}
while (lastName.isEmpty()) {
System.out.println("Enter student's last name: ");
lastName = keyboard.nextLine();
}
while (idNumber.length() != 9) {
System.out.println("Enter student's nine-digit ID#: ");
idNumber = keyboard.nextLine();
}
while (major.isEmpty()) {
System.out.println("Enter student's major: ");
major = keyboard.nextLine();
}
//Concatinating first name and last name into name
String name = firstName + " " + lastName;
//Adding the new entry to the StudentArrayList
StudentEntry entry = new StudentEntry (name ,idNumber, major);
recordsObject.addStudentEntry (entry);
//Resetting variables
firstName = "";
lastName = "";
idNumber = "";
major = "";
/*If the user enters "yes" then they can submit more.
If they enter "no", then all submitted info will be shown */
System.out.println("Type yes to add another entry");
} while (keyboard.next().equalsIgnoreCase("YES"));
keyboard.close();
//Printing out those entries
System.out.println("Student Records");
System.out.println("---------------");
for (int index = 0 ; index < recordsObject.StudentArrayList.size() ; index++) {
System.out.println(recordsObject.StudentArrayList.get(index));
System.out.println("");
}
}
}
Ich führe Ihren Code und es erscheint nur einmal –
Sie vermasselt Ihr Objekt :) Überprüfen Sie dies, wenn Sie wirklich für Java interessieren: https://www.javatpoint.com/java-oops-concepts –