if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen

JavaLernen

Neues Mitglied
Hallo,

ich programmiere gerade ein Telefonverzeichnis mit einer Hashmap und möchte dass nachdem der Benutzer "Abfragen" eingegeben hat die Option kommt den "Kontakt" oder die "Telefonnummer" abzufragen. Ich hab dafür innerhalb meiner Else if-Schleife ("Abfragen" eingeben) zwei if-Schleifen angelegt wo man entweder noch "Kontakt" oder "Telefonnummer" eingeben kann um den Key (Kontakt) bzw. den dazugehörigen Value (Telefonnummer) auszugeben. Das Problem ist dass nachdem ich "Abfragen" eingegeben habe nur doch da steht "[Kontakt] oder [Telefonnummer] eingeben", es aber keine Möglichkeit mehr gibt im Scanner nochmals "Kontakt" oder "Telefonnummer" einzugeben. Das erschließt sich mir nicht logisch warum die beiden if-Schleifen innerhalb der else if-Schleife einfach ignoriert werden?

Wäre dankbar für Hilfe!





String eingeben = scanner.next();

else if (eingeben.equalsIgnoreCase("Abfragen")) {
System.out.println("[Kontakt] oder [Telefonnummer] eingeben:");

if (eingeben.equalsIgnoreCase("Kontakt")) {
if (Kontakte.containsKey(scanner.next()) == true) {
System.out.println("Kontakt vorhanden");

} else {
System.out.println("Kontakt nicht vorhanden");
}

} else if (eingeben.equalsIgnoreCase("Telefonnummer")) {
if (Kontakte.containsValue(scanner.next()) == true) {
System.out.println("Nummer vorhanden");

} else {
System.out.println("Nummer nicht vorhanden");
}
}
 
Die Lösung für das eigentliche Problem dürfte @fhoffmann schon aufgezeigt haben.

Aber ein kleiner Hinweis zum Sprachgebrauch: If ist natürlich keine Schleife. Eine Schleife ist etwas, das einen Block mehrfach ausführen kann. Bei einer if Anweisung hat man aber lediglich eine bedingte Ausführung und keinerlei Wiederholung.

Und ein Hinweis zur Lesbarkeit: So möglich, würde ich auch immer empfehlen, nicht mehrere Dinge auf einmal in einer Zeile zu machen. Und in einer Bedingung machen Prüfungen wie == true und so auch wenig Sinn. Die eigentliche Bedingung ist ja bereits ein boolean der true oder false sein kann und daher kann das == true ersatzlos gestrichen werden.

Also Code wie:
if (Kontakte.containsKey(scanner.next()) == true) {
würde ich zumindest in zwei Teile aufgliedern und dann so schreiben:
Java:
String kontakt = scanner.next();
if (Kontakte.containsKey(kontakt)) {
 

Zurück
Oben