info@a-coding-project.de

Java: Abfragen / Verzweigungen

Abfragen (auch Verzweigungen genannt) bewirken, dass Anweisungen oder Anweisungsblöcke nur dann ausgeführt werden, wenn bestimmte Bedingungen erfüllt sind, andernfalls werden sie übersprungen.

If-Anweisung

if heißt "wenn". Auf unseren Roboter angewendet, könnte das heissen: Wenn du noch keine 3 Autos genommen hast, nimm eins, oder: Wenn du Spielzeugautos vom Typ "BMW" hast, such die Schachtel "BMW".
Der Programmcode dazu könnte so aussehen:

if (AutosGenommen < 3) NimmAuto;

Oder:

if (AutoAktuell.Marke == "BMW") SucheSchachtel("BMW");

Der Text hinter dem if steht in Klammern. Es ist ein Vergleich im Sinne einer Frage: Ist AutosGenommen kleiner 3? Wenn Ja (true), nimm noch ein Auto, sonst nicht. Das heißt, die Anweisung NimmAuto soll nur dann ausgeführt werden, wenn die Bedingung, die in der Klammer hinter if steht, erfüllt ist. Wenn nicht, dann überspringe die Anweisung NimmAuto und mach bei der nächstfolgenden weiter. Die Zeile mit dem if darf nicht mit Semikolon abgeschlossen werden. Sie ist nämlich keine Anweisung. Die Anweisungen danach werden nur ausgeführt, wenn die Bedingung erfüllt ist.
Wenn eine Bedingung nicht erfüllt ist, soll oft nicht nur eine Anweisung übersprungen werden, sondern eine ganze Gruppe. Man spricht dann von einem Anweisungsblock. Blöcke werden in geschweifte Klammern eingefasst:

AnweisungVorDemBlock;
if (Variable == Wert)
{
 Anweisung1; // 1.Anweisung des Blocks
 Anweisung2; // 2.Anweisung des Blocks
 Anweisung3; // 3.Anweisung des Blocks
}
AnweisungNachDemBlock;

Java arbeitet so: Wenn die Bedingung erfüllt ist: AnweisungVorDemBlock; Anweisung1; Anweisung2; Anweisung3; AnweisungNachDemBlock;
Wenn die Bedingung nicht erfüllt ist: AnweisungVorDemBlock; AnweisungNachDemBlock;

Else-Anweisung

Manche Anweisungen oder Anweisungsblöcke sollen nur dann ausgeführt werden, wenn die Bedingung nicht erfüllt ist. Das regelt man mit else

if (BedingungErfüllt)
     TuDies;
else
      TuJenes;
InJedemFallMachHierWeiter;

if und else wirken also wie Weichen bei der Eisenbahn: Je nachdem, wie die Bedingungen erfüllt sind oder nicht, "verzweigt" es dann jeweils zu dem "if-Zweig" oder dem "else-Zweig".

Bedingungen können auch "verschachtelt" werden:

if (SindNochAutosDa)
{
  if (AutosGenommen < 3)
      NimmAuto;
  else
      PackeAutosEin;
}

Switch-Anweisung

Wenn mehr als 2 Verzweigungen zur Auswahl stehen, ist die switch-Anweisung unter Umständen effektiver:

switch ( WochentagNr ) 
{
  case 1:
      Montagsaufgabe;
  break;

  case 2:
      Dienstagsaufgabe;
  break;

  ...

  default:
      IchHabefrei;
}

Java macht folgendes: Wenn die Wochentagnr == 1 ist, wird die Montagsaufgabe ausgeführt. break bedeutet, dass dann die restlichen Anweisungen des Blocks übersprungen werden können. Wenn Dienstag ist, stößt Java auf case 1 und stellt fest, dass die Bedingung nicht erfüllt ist. Es sucht also nach dem nächsten case. Bei case 2 ist die Bedingung erfüllt, deshalb wird die Anweisung Dienstagsaufgabe ausgeführt und dann, aufgrund von break, nach dem switch-Block fortgesetzt. Wird kein zutreffender case-Wert gefunden, dann zieht default (Standard).
Allerdings können nach switch und case nur Ausdrücke auf Werte abgeprüft werden, deren Datentyp sich in int casten lassen. default kann auch weggelassen werden.

Weiterlesen: ⯈ Struktur des Programmcodes

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant