if-else in einer schleife

barneydlx

Mitglied
ich möchte eine if else verzweigung in eine do while schleife einfügen. es soll entweder a oder b eingegeben werden , wenn keins von beiden eingegeben wurde wieder zurück an den anfang springen. sollte ich eigentlich auch selber hinkriegen aber heute will es irgendwie nicht in die richtige richtung laufen...
Java:
do {
			System.out.println("a oder b");
			eingabe1=sc.next();
			if (eingabe1.equalsIgnoreCase("a")){System.out.println("sie haben a gewählt");
			if (eingabe1.equalsIgnoreCase("b")){System.out.println("Sie haben b gewählt");}
			else {System.out.println("eingabe ungültig, bitte wiederholen");
			}}
		}while (true);
 

bERt0r

Top Contributor
Der erste Gedanke von mir, wenn ich sowas sehe ist : "Setzen Sechs". Aber das soll jetzt gar nicht gegen dich gerichtet sein. Ein Lehrer der dir beibringt eine while(true) Schleife zu konstruieren sollte sich um eine Nachschulung bemühen.
 

Fant

Bekanntes Mitglied
Der erste Gedanke von mir, wenn ich sowas sehe ist : "Setzen Sechs". Aber das soll jetzt gar nicht gegen dich gerichtet sein. Ein Lehrer der dir beibringt eine while(true) Schleife zu konstruieren sollte sich um eine Nachschulung bemühen.

Wieso wäre das denn so schlimm? Und: Was gäbe es denn hier für eine Alternative?
 

casi91

Bekanntes Mitglied
Was daran so schlimm ist, ist das while(true) immer true ist.
Also haste hier eine Schleife die immer durchläuft außer du springst mit nem "break" raus.
Das ist allerdings nicht Sinn und Zweck einer Schleife.
Du könntest es Beispielsweise so machen:
Java:
boolean eingabe = false;
do {
            System.out.println("a oder b");
            
            eingabe1=sc.next();
            if (eingabe1.equalsIgnoreCase("a")){
                System.out.println("sie haben a gewählt");
                eingabe = true;
            }
            if (eingabe1.equalsIgnoreCase("b")){
                 System.out.println("Sie haben b gewählt");
                 eingabe = true;
            }
            else {System.out.println("eingabe ungültig, bitte wiederholen");
            }}
        }while (!eingabe);

Das wäre jetzt eine Lösung. Gibt bestimmt noch bessere/schönere/kürzere
 

ARadauer

Top Contributor
zb so...

Java:
        String eingabe = sc.next();
        while(!eingabe.equalsIgnoreCase("a") && !eingabe.equalsIgnoreCase("b")){
            System.out.println("a oder b");
            eingabe=sc.next();
        }

Ein Lehrer der dir beibringt eine while(true) Schleife zu konstruieren sollte sich um eine Nachschulung bemühen.
halt ich für übertrieben... mach ich auch manchaml wenn die abbruch bedinung so komplex ist, dass sie unsauber in einen ausdruck passt ...
mhn wobei dann sollte man sie eher in eine Methode auslagern.... mhnnn stimmt while(true) is doch nicht so schön......
 

ARadauer

Top Contributor
Java:
static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        
        String eingabe = null;
        while(!isEingabeCorrect(eingabe)){
            eingabe=readEingabe();
        }                 
        System.out.println("fertig");
    }
    
    public static boolean isEingabeCorrect(String eingabe){
        if(eingabe == null)
            return false;
        
        if (eingabe.equalsIgnoreCase("a")){
            System.out.println("sie haben a gewählt");
            return true;
        }
        if (eingabe.equalsIgnoreCase("b")){
             System.out.println("Sie haben b gewählt");
             return true;
        }
        System.out.println("eingabe ungültig, bitte wiederholen");
        return false;
    }
    
    public static String readEingabe(){
        System.out.println("a oder b");
        return sc.next();
    }

while(!isEingabeCorrect(eingabe)){
eingabe=readEingabe();
}
sagt halt genau aus was es macht
 
M

Marcinek

Gast
ja, wobei deine Schleife nie betreten wird ;D

Manachal ist der einfache weg (hier break) schon der bessere.
 

Fant

Bekanntes Mitglied
Ich stimme definitiv zu, dass man einem Code sofort ansehen sollte, was er denn macht (vielleicht nicht bis ins kleinste Detail, wenn man sich nicht etwas intensiver damit auseinander setzt, aber nungut) HIER ist das aber doch mit Sicherheit gewährleistet. Mich würde einfach nur interessieren, ob es tatsächlich einen objektiven Grund gibt, das while(true)-Konstrukt pauschal so zu verteufeln?
 

AquaBall

Top Contributor
Ich glaube auch nicht, dass
Code:
break
nur erfunden wurde, um schlampige Programmierer zu unterstützen.
Das selbe gilt ja für
Code:
return
. Mehrere Returns an unterschiedlichen Stellen ist ja genau das gleiche wie mehrere Breaks.

Hier könnte Java ja auch verlangen (wie in anderen Programmiersprachen), dass es exakt nur 1 return am Ende geben darf!
Tuts aber nicht, warum sollte man dann nicht eine Schleife mit break verlassen?
Und in weiterer Folge, warum sollte es Endlosschleifen nicht zulässig oder nicht "schön" sein.

Ich finde sogar im Gegenteil: Endlosschleifen symbolisieren oft: "Das soll das Programm 'ständig' machen."
 

mla.rue

Bekanntes Mitglied
mein Dozent nannte das immer Spaghetti-Programmierung (nicht ganz so schlimm wie GoTo, aber while(true) folgt dichtauf).
Ein objektiver Grund wäre, wenn der Compiler damit nicht zurechtkäme, nur kommt der mit while(true) zurecht, somit gibt es keinen objektiven Grund, nur subjektive. Und dazu gehört halt die Lesbarkeit/Wartbarkeit, das sollte man nicht unterschätzen.

Es mag HIER noch überschaubar sein, DORT (wenn die Schleife paar Zeilen länger ist) aber nicht mehr in den ersten 3 Zeilen sein und somit sofort ins Auge fallen. Zudem, wenn mans HIER schon falsch macht, macht mans auch DORT falsch. Man sollte sich angewöhnen es auch in den einfachen Fällen schon vernünftig zu machen.
 

AquaBall

Top Contributor
War auch mein erster Gedanke. Aber auf den zweiten Blick war dann auch klar, dass das funktioniert. Der Vorgabewert "null" der Eingabe gilt als ungültiger Wert, deshalb wird die Schleife betreten.

Erst wenn ein a oder ein b eingegeben wurde, wird die Schleife beendet.

ALso ganz nach dem Motto:
"Solange kein Null nie nicht umgekehrt negiert wird: Tu etwas?"

Soviel zum Thema Lesbarkeit/Wartbarkeit!

Übrigens: ganz zurück zum Anfang.
Der Fehler von TO kommt weniger aus der (Nicht-)Verwendung von break, sondern resultiert aus der unübersichtlichen Gliederung.
Man muss schon 2x hinsehen, um zu sehen, welche Klammer wohin gehört.
Mit richiger Einrückung sieht man den Fehler sofort.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Variablen If else: Einer Variable einen Wert hinzufügen oder so? Java Basics - Anfänger-Themen 6
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
I If / Else in Setter? Java Basics - Anfänger-Themen 8
M If-Else Java Basics - Anfänger-Themen 5
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
laxla123 Verschachtelte If-Else Schleife Java Basics - Anfänger-Themen 21
laxla123 If-else Java Java Basics - Anfänger-Themen 4
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Übung Else if Java Basics - Anfänger-Themen 2
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
steven789hjk543 Input mit if-else Java Basics - Anfänger-Themen 23
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
R else without if error Java Basics - Anfänger-Themen 5
F Methoden Verschachtelte if else Methode Java Basics - Anfänger-Themen 10
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
C Variablen 'else' without 'if' Java Basics - Anfänger-Themen 4
F If - Else Java Basics - Anfänger-Themen 3
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
M jOptionPane mit if else Java Basics - Anfänger-Themen 16
K Frage zu If & else if Java Basics - Anfänger-Themen 5
R else if anweisungen Java Basics - Anfänger-Themen 2
Y Problem mit If-Else Verzweigung! Java Basics - Anfänger-Themen 9
A Warum funktioniert switch aber nicht if/else? Java Basics - Anfänger-Themen 23
Hijo2006 If-else Java Basics - Anfänger-Themen 6
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
T If/ Else If (zurückkehren) Java Basics - Anfänger-Themen 4
O Grosse If / Else verschachtelung übersichlitcher gestlten Java Basics - Anfänger-Themen 6
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
M If in einem else Java Basics - Anfänger-Themen 14
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
J Mehrere IF Anweisungen und dazugehörige ELSE Java Basics - Anfänger-Themen 6
C else in if umschreiben Java Basics - Anfänger-Themen 2
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
P Compiler-Fehler wieso zeigt der compiler ein else without if? Java Basics - Anfänger-Themen 3
E If...else... Java Basics - Anfänger-Themen 7
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
C If Else Frage Java Basics - Anfänger-Themen 2
M if, else Anweisung Java Basics - Anfänger-Themen 3
J Ergebnis wird gespammt sowie eine else if Frage Java Basics - Anfänger-Themen 2
A instanceof-if-else-Anweisungen eleganter lösen Java Basics - Anfänger-Themen 5
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
V Operatoren Java if-else argument Java Basics - Anfänger-Themen 4
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
P [ANFÄNGER] if else funktioniert nicht Java Basics - Anfänger-Themen 4
T If, else Problem Java Basics - Anfänger-Themen 12
C IF-Else Verknüpfungen Java Basics - Anfänger-Themen 10
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Problem im If-Else-Statement Java Basics - Anfänger-Themen 4
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
T If ; else error on system token delete Java Basics - Anfänger-Themen 5
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
L else without if Fehler Java Basics - Anfänger-Themen 14
F try/catch - (else) Java Basics - Anfänger-Themen 11
H Worauf bezieht sich die erste else-Anweisung Java Basics - Anfänger-Themen 9
S if und else problem... Java Basics - Anfänger-Themen 13
Q if-else Logikproblem Java Basics - Anfänger-Themen 4
M Probleme mit else if Java Basics - Anfänger-Themen 15
M Erste Schritte Break-Anweisung bei if-else Java Basics - Anfänger-Themen 6
B OOP If und else in Main class einbinden Java Basics - Anfänger-Themen 9
T Erste Schritte switch case Anweisung und if else Verzweigungen? Java Basics - Anfänger-Themen 6
K Bedingungen else Java Basics - Anfänger-Themen 7
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
T if else Java Basics - Anfänger-Themen 8
R boolean, if-else Java Basics - Anfänger-Themen 7
M if then else geht nicht Java Basics - Anfänger-Themen 10
P int-Wertevergleich mit if-else-Verzweigung Java Basics - Anfänger-Themen 3
P If-else-Verzweigung Java Basics - Anfänger-Themen 9
E Compiler-Fehler Fehler: else without if Java Basics - Anfänger-Themen 11
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
K Mal wieder ein Problem mit If / Else Java Basics - Anfänger-Themen 10
K Anfänger If / Else Problem Java Basics - Anfänger-Themen 5
C if else Abfrage Java Basics - Anfänger-Themen 11
T Umschreiben von switch in if else und umgekehrt Java Basics - Anfänger-Themen 9
C Schleifen, if, else......? Java Basics - Anfänger-Themen 8
2 if und else Java Basics - Anfänger-Themen 9
L If/else nicht korrekt ausgeführt. Java Basics - Anfänger-Themen 22
E Verschachtelte If-Anweisungen - "else without if" Java Basics - Anfänger-Themen 4
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
S if-else Java Basics - Anfänger-Themen 22
A ein if else problem Java Basics - Anfänger-Themen 13
N If-else-If Leiter Java Basics - Anfänger-Themen 9
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
L if else anweisung Java Basics - Anfänger-Themen 2
M If/Else mit Zahlenfolge Java Basics - Anfänger-Themen 13
B Problem mit Variable und if/else Java Basics - Anfänger-Themen 6
H alternativen zu if .. else .. Java Basics - Anfänger-Themen 11
J Geschachtelte If-Else Anweisung Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben