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]
 

KonradN

Super-Moderator
Mitarbeiter
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.
 

Ähnliche Java Themen

Neue Themen


Oben