Verzweigungen

In diesem Teil werfen wir nun einen Blick auf Verzweigungen. Diese sind ein Punkt in deinem Programm, an dem Entscheidungen getroffen werden: links oder rechts, richtig oder falsch, gewonnen oder verloren? Natürlich soll bei jeder Option etwas anderes passieren, hat ein Spieler ein Spiel verloren, möchtest du natürlich nicht anzeigen, dass er gewonnen hat. Dabei hilft dir die Verzweigung:
boolean gewonnen = false;
if (gewonnen) {
  // Dies wird ausgeführt, wenn die Bedingung wahr ist
  System.out.println("Du hast gewonnen!");
} else {
  // Dieser Block wird ausgeführt, wenn die erste Bedingung falsch ist
  System.out.println("Du hast leider verloren.");
}

// Listing 7.1 If-Else
Du hast bestimmt schon erkannt, dass in unserem Beispiel der else-Block ausgeführt wird. Natürlich kannst du auch Variablen in der if-Bedingung benutzen, um über den weiteren Verlauf zu entscheiden. Aber was ist, wenn es mehr Optionen gibt, als nur richtig und falsch? In dem Fall hast du zwei Optionen:

Beispiel: Du möchtest wissen, welche Option ein Nutzer gewählt hat. (1, 2 oder 3?)
Lösung mit Else-If
int eingabe = 2;

if (eingabe == 1) {
  System.out.println("Deine Eingabe ist 1.");
} else if (eingabe == 2) {
  System.out.println("Deine Eingabe ist 2.");
} else if (eingabe == 3) {
  System.out.println("Deine Eingabe ist 3.");
} else {
  System.out.println("Deine Eingabe ist weder 1, 2 oder 3.");
}


// Listing 7.2 Else-If
Hier machen wir von der Option des Else-If Gebrauch. Jeder Fall bekommt hierbei seine eigene If-Abfrage. Um auch den Fall abzudecken, dass die Eingabe keine der geforderten Option ist, wird abschließend ein else-Block verwendet.
Alternative Lösung mit Switch-Case
int eingabe = 2;

switch(eingabe) {
	case 1: System.out.println("Deine Eingabe ist 1."); break;
	case 2: System.out.println("Deine Eingabe ist 2."); break;
	case 3: System.out.println("Deine Eingabe ist 3."); break;
	default: System.out.println("Deine Eingabe ist weder 1, 2 oder 3."); break;
}

// Listing 7.4 Switch-Case
Eine etwas elegantere Lösung für das Beispiel ist Switch Case. Hier geben wir unsere Eingabe ein und decken die Optionen dann mit je einem Case ab. Ist die Eingabe falsch haben wir einen Default-Case definiert, welche die gleiche Aufgabe übernimmt wie das else aus der ersten Lösung. Wichtig ist, dass wir jeden Case mit breakbreak beenden. Dies ist notwendig, damit wir das Switch Case Konstrukt verlassen. Du kannst gerne mal ausprobieren, was passiert, wenn du breakbreak weglässt.

Aussagen verknüpfen

Natürlich ist es auch möglich, mehrere Aussagen zu verknüpfen. Schau dir zum Beispiel folgenden Code an:
String farbe = "blau";
if (farbe.equals("rot") || farbe.equals("blau") || farbe.equals("gelb")) {
  System.out.println("Deine Farbe ist eine Grundfarbe.");
} else {
  System.out.println("Deine Farbe ist keine Grundfarbe.");
}

// Listing 7.3 Oder-Verknüpfung
Hier möchten wir herausfinden, ob eine bestimmte Farbe Teil der Grundfarben ist. Dazu verknüpfen wir mehrere Farben als Oder-Verknüpfung. Es muss also nur eine der drei Bedingungen wahr sein, damit der if-Block ausgeführt wird. Ist die Farbe keine Grundfarbe, wird der else-Block ausgeführt. Dir ist mit Sicherheit schon der besondere Vergleich mit .equals().equals(…) aufgefallen. Bisher haben wir für diese Art von Vergleichen ein doppeltes Gleichheitszeichen verwendet. In diesem Fall nutzen wir .equals().equals(…), da es sich bei dem Vergleich um zwei Strings, also zwei Objekte, handelt. Du kannst dir also folgendes merken: Vergleichst du ein Objekt nutzt du .equals().equals(…) und wenn es sich um einen primitiven Typen wie int, float, etc. handelt, nutzt du das doppelte Gleichheitszeichen.

Übersicht: Wahr oder Falsch?

Abschließend findest du hier noch eine kleine Auflistung von wahren und falschen Aussagen. Schau sie dir gerne an und probiere sie in deinem eigenen Code aus, um vertrauter damit zu werden.

Wahre Aussagen

Falsche Aussagen

true: Standardbefehl für wahre Aussagen

false: Standardbefehl für falsche Aussagen

!false: Ein Ausrufezeichen kehrt Aussagen um: wahr wird falsch und falsch wird wahr.

!true

1 > -10: Wir können auch Vergleichsoperatoren nutzen (<,>,==, !=)

5==9: Fünf ist natürlich ungleich neun, wichtig ist, dass du zwei Gleichheitszeichen verwendest.

5!=9: Hier wird geprüft, ob fünf ungleich neun ist. Das stimmt natürlich

3 > 9 || 5 > 7: Dabei handelt es sich um eine wahre Aussage, da nur eine der Bedingungen wahr sein muss.

3 > 9 && 5 > 7: Das gleiche Beispiel als und-Verknüpfung ist allerdings eine falsche Aussage, da beide Aussagen wahr sein müssen.

Tabelle 7.1 Wahre und Falsche Aussagen

Zusammenfassung

  • Verzweigungen lassen dein Programm Entscheidungen treffen
  • Dazu verwendest du eine if-else-Anweisung
  • Bei vielen Möglichkeiten hilft dir switch-case dabei, deinen Code übersichtlich zu halten
  • Du kannst mehrere Bedingungen miteinander Verknüpfen (UND-Verknüpfung, ODER-Verknüpfung)
Kommentieren Kommentare