Java If-Verzweigung mehrere "Befehle"?
Hallo, ich habe folgende Frage:
Kann man in eine Zeile die sagen wir so aussieht
if (true) i = 1;
noch einen "Befehl" hinter packen, also z.B.
if (true) i = 1, j = 2;
Ist natürlich nur ein Beispiel, aber ich frage mich ob das so ähnlich funktionieren würde. Also ohne diese {} geschweiften Klammern.
Vielen Dank schonmal
Leider funktioniert es nicht so, wie in meinem Beispiel
9 Antworten
Da guckst du in die Java Language Specification (JLS) §14.9
IfThenStatement:
if (Expression) Statement
Und für Statement findest du dann ganz viele weitere Möglichkeiten, die StatementExpressionList ist allerdings nicht darunter. Die gibt es nur in ForInit und ForUpdate beim ForStatement
Du kannst mehrere Befehle in einem Block, der durch geschweifte Klammern gekennzeichnet ist, zusammenfassen:
{
befehl1();
befehl2();
}
Das kannst du mit einer Verzweigung kombinieren:
if (bedingung) {
befehl1();
befehl2();
}
Hinweis: Manche empfehlen grundsätzlich geschweifte Klammern zu verwenden, damit man unnötige Fehler vermeidet.
Dein Vorhaben, also es ohne geschweifte Klammern umzusetzen, funktioniert nicht direkt. Dazu müsstest du die Befehle in ein Unterprogramm (in Java Methode genannt) auslagern:
if (bedingung) do_something();
und
void do_something() {
befehl1();
befehl2();
}
Tipp: Schreibe lesbaren Code, d. h. eine Anweisung pro Zeile. Verzichte auf Code, der in die Breite gezogen ist.
Die anderen haben es dir ja schon gesagt.
Die frage die ich mir stelle ist: Warum?
Denn das was du möchstest ist absichtlich und vorsätzlich dir eine schlechte angewohnheit angewöhnen. Sobald du nämlich mehr als 1 ding drinne stehen hast wird das ganze sehr schnell unleserlich.
Ich persönlich hab mir genau das gegenteil angewöhnt. Ich nutze immer klammern. Auch wenn nur 1 befehl drinne steht.
Ja ne, keine Klammern gibt es explizit nur für ein Statement. Das höchste der Gefühle wäre halt
if (b) { i = 1; j = 1; }
dann schreibe i = 1 ; und j = 2; als Befehle in eine Prozedur (heißt so ein Unterprogramm in Java so?) und rufe diese Prozedur in der if- Anweisung auf.
if (true) procedur_mit_i_und_j ;
Unterprogramme heißen in Java Methoden.