jario_
Zur Übersicht

Kapitel 2

Bedingungen

Bisher lief jedes Programm stur von oben nach unten. Mit Bedingungen trifft es Entscheidungen: Je nach Eingabe wird der eine oder der andere Teil ausgeführt.

if, else if, else

Hinter if steht in runden Klammern eine Bedingung. Ist sie wahr, läuft der Block in den geschweiften Klammern. Sonst geht es mit else if (nächste Bedingung) oder else (alle übrigen Fälle) weiter. Java prüft von oben nach unten und nimmt nur den ersten passenden Zweig.

Zum Vergleichen gibt es == (gleich), != (ungleich), <, <=, > und >=.

Du kannst den Code ändern und neu ausführen.

Probier die Eingaben -5, 0 und 15 aus. Bei 15 ist temperature < 15 falsch, deshalb landet das Programm im else.

Wahrheitswerte und Verknüpfungen

Eine Bedingung ist ein Wert vom Typ boolean: true oder false. Du kannst ihn in einer Variablen speichern und verknüpfen:

  • a && b: beides muss wahr sein (und)
  • a || b: mindestens eines muss wahr sein (oder)
  • !a: dreht den Wert um (nicht)

&& bindet stärker als ||. Setz im Zweifel Klammern, dann ist es auch beim Lesen klar.

Texte vergleichst du mit equals, nicht mit ==: command.equals("stop").

Du kannst den Code ändern und neu ausführen.

switch

Prüfst du eine Variable gegen mehrere feste Werte, ist switch übersichtlicher als eine lange else if-Kette. Jeder Fall steht hinter case, nach dem Pfeil -> kommt, was passieren soll. Mehrere Werte trennst du mit Komma. default deckt alle übrigen Werte ab. switch funktioniert mit ganzen Zahlen und mit Texten.

Ein switch kann auch einen Wert liefern (Switch-Ausdruck). Dann steht er rechts vom = oder hinter return, endet mit einem Semikolon und braucht für jeden möglichen Wert einen Fall, meist über default.

Du kannst den Code ändern und neu ausführen.

Typische Fehler

  • = statt ==

    = weist einen Wert zu, == vergleicht. if (age = 18) meldet der Compiler mit incompatible types: int cannot be converted to boolean.

  • Texte mit == vergleichen

    == prüft bei Texten, ob es dasselbe Objekt ist, nicht ob die Buchstaben gleich sind. Mit eingelesenen Texten ist das oft false, obwohl sie gleich aussehen. Immer equals benutzen:

    if (answer.equals("yes")) { ... }
  • Semikolon hinter if

    if (x > 10); ist eine Bedingung mit leerer Anweisung. Der Block danach läuft dann immer. Hinter die runde Klammer gehört direkt die geschweifte.

  • Falsche Reihenfolge

    Bei else if gewinnt der erste passende Zweig. Steht if (points >= 50) vor else if (points >= 90), wird der zweite Zweig nie erreicht. Prüfe die engere Bedingung zuerst.

  • default fehlt im Switch-Ausdruck

    Liefert ein switch einen Wert, muss jeder mögliche Wert abgedeckt sein. Ohne default meldet der Compiler the switch expression does not cover all possible input values.