Erste Schritte Vergleiche

xant95

Mitglied
Hallo, ich habe das Problem dass manche if/For Schleifen (denke ich) nicht beachtet werden.
Wenn ich zB bei der Email-Adresse etwas falsches eingebe, wird trotzdem sofort zur letzten else Ausgabe gesprungen. ("UngĂĽltiger Name!")

Danke im Vorraus! đź‘€



[CODE lang="java" title="Methode"] public static void makePassenger() {
// PRĂśFUNG OB DER USER BEREITS IN DER PASSENGERLISTE IST
if (!Passenger.passengerList.contains(AccountManagement.loggedInUser)) {reservedSeats++; }

boolean carryOn = true;
System.out.println("Gib bitte die Namen und die dazugehörigen Email-Adressen deiner Begleitungen ein:");

while (carryOn) {
System.out.println("Name:");
String userInputName = usefullTools.scanString().toLowerCase();

if (userInputName.equals("0") ) {carryOn = false; break;}
else { // RICHTIGKEIT DES NAMENS
if (!usefullTools.isDigit(userInputName)) {
System.out.println("Email-Adresse: ");
String userInputEmailadr = usefullTools.scanString().toLowerCase();

// ĂśBERPRĂśFUNG AUF PASSENGERLISTE
for (int i = 0; i < Passenger.passengerList.size(); i++) {
if (Passenger.passengerList.get(i).getEmailadr().compareTo(userInputEmailadr) == 0) {
System.out.println("Diese Person fliegt bereits mit!"); makePassenger();
}
// RICHTIGKEIT DER EMAIL-ADRESSE
else if (userInputEmailadr.contains("@") && userInputEmailadr.contains(".")) {
Passenger passenger = new Passenger(userInputEmailadr, userInputName, false);
Passenger.passengerList.add(passenger);
System.out.println("Danke!\n" + Passenger.passengerList.get(Passenger.passengerList.size() - 1).getName()
+ ", wurde erfolgreich hinzugefĂĽgt!\nWenn du fertig bist, gib bitte 0 ein!");
reservedSeats++;
}else {System.out.println("Gib bitte eine gĂĽltige Email-Adresse ein!"); makePassenger(); }
}
}else {System.out.println("UngĂĽltiger Name!"); makePassenger(); }
}
}
}
[/CODE]
 
Diese Verschachtelung von if/else ist extrem unübersichtlich und sehr schwer zu lesen. Sowas sollte man - gerade als Anfänger - immer in mehrere Methoden unterteilen! Vor allem mit der schlechten Formatierung ist das einfach fatal!

Wenn ich das richtig gesehen habe, dann ist das else mit der Ausgabe "Ungültiger Name" zugehörig zum if (!usefullTools.isDigit(userInputName)) { - wenn er da also hin springt, dann lieferte dieser Aufruf false.
Hier solltest Du also mal schauen, was Du als Name angibst, was in der Variable gespeichert ist und was der Check genau macht.
 

Neue Themen


ZurĂĽck
Oben