Java If-Verzweigung mehrere "Befehle"?


28.06.2022, 08:35

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

Woher ich das weiß:Berufserfahrung

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.

Woher ich das weiß:Studium / Ausbildung – Bachelor

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; }
Woher ich das weiß:Hobby – Ich programmiere in meiner Freizeit mit Java.

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 ;