Einfache Verzweigungen mit if und else in Java

Wir lernen über einfache Verzweigungen mit if und else in Java, was wir als Bedingung verwenden können und welche Sonderfälle es gibt.Tags: | | | |
Noch nicht sicher genug im Webdesign? Lass dir in unseren Programmier-Kursen in Kirchdorf oder unserer Wichtel-Webdesign-Agentur in Pettenbach weiterhelfen!

Worum geht´s?

In diesem Java Tutorial lernen wir, wie einfache Verzweigungen mit if und else aufgebaut sind.

1. Was sind Verzweigungen mit if und else in Java?

Ähnlich wie bei switch case kann man mit Hilfe von if und else den Programmfluss des Programms steuern. Es handelt sich gewissermaßen um „Wegkreuzungen“, die basierend auf Variablen-Werten dem Programm sagen, was es als nächstes machen soll:

Java if else

Im obigen Fall:

  • Falls die Variable a größer als 5 ist: gehe den grünen, linken Weg weiter
  • Falls die Variable a NICHT größer als 5 ist: gehe den braunen, rechten Weg weiter

In Java würden wir ein solches Verhalten z.B. so schreiben:

import java.util.Random;

public class HelloWorld {
    public static void main(String[] args) {
        Random r = new Random();
        // erstelle zahl zwischen 1 und 10
        int a = r.nextInt(10);

        if (a > 5) {
            System.out.println("a ist größer als 5");
        }
        else {
            System.out.println("a ist NICHT größer als 5");
        }
    }
}

Wir verwenden wieder Zufallszahlen, um besser verdeutlichen zu können, warum Verzweigungen Sinn machen – damit das Programm basierend auf Variablen-Werten unterschiedliche Ergebnisse erzeugen kann.

Das kann nicht nur Sinn machen, wenn Zufallszahlen im Spiel sind, sondern auch wenn z.B. der Benutzer des Programms verschiedene Werte eingibt.

2. Einfache if in Java

2.1 Das einfachste if in Java

Die einfachste Form eines if in Java kommt sogar ohne einem else-Block aus:

import java.util.Random;

public class HelloWorld {
    public static void main(String[] args) {
        Random r = new Random();
        // erstelle zahl zwischen 1 und 6
        int a = r.nextInt(10);

        if (a > 5) {
            System.out.println("a ist größer als 5");
        }
    }
}

Das if im obigen Code bedeutet:

  • Falls a größer als 5 ist: Mache das, was in den {}-Klammern steht (in diesem Fall eine Textausgabe)
  • Sonst: mach gar nichts und mach unterhalb der schließenden }-Klammer weiter.

Im zweiten Fall wird das, was im if-Block steht, also übersprungen.

2.2 Ein einfaches if in Java mit einem else dazu

Gehen wir nochmal zum Eingangs-Beispiel zurück:

import java.util.Random;

public class HelloWorld {
    public static void main(String[] args) {
        Random r = new Random();
        // erstelle zahl zwischen 1 und 6
        int a = r.nextInt(10);

        if (a > 5) {
            System.out.println("a ist größer als 5");
        }
        else {
            System.out.println("a ist NICHT größer als 5");
        }
    }
}

Bei diesem if ist nun unter der schließenden }-Klammer noch ein else-Block hinzugekommen.

Dieser verändert nun den zweiten Fall:

  • Falls a größer als 5 ist: Mache das, was im if-Block in den {}-Klammern steht
  • Sonst: mach stattdessen das, was im else-Block innerhalb der {}-Klammern steht

Anstatt also nur den if-Block zu überspringen, wird zusätzlich noch der else-Block ausgeführt, falls die Bedingung (a > 5) nicht stimmt.

3. Welche Bedingungen kann ich in die runden Klammern () schreiben?

Grundsätzlich haben wir in Java für unsere einfachen Datentypen (int, double, char, String, boolean) 6 Arten von Bedingungen:

a > 5
a < 5
a == 5
(Achtung: 2x Gleichheitszeichen !)
a != 5 (a ist ungleich 5)
a >= 5
a <= 5

Allerdings gibt es dabei einige Sonder-Regelungen für bestimmte Datentypen:

3.1 Bedingungen mit boolean-Werten

boolean-Werte können nur mit == und != verglichen werden.

Dafür gibt es praktischerweise für booleans Abkürzungen:

boolean isDrunk = true;
if (isDrunk == true) {
    
}
if (isDrunk) {
    
}

Beide der obigen if-Formen vergleichen, ob isDrunk == true ist, die untere ist die abgekürzte Schreibweise.

Falls wir auf == false vergleichen wollen, gelten diese beiden Schreibweisen:

boolean isDrunk = false;
if (isDrunk == false) {

}
if (! isDrunk) {

}

Das Rufzeichen bedeutet „umkehren“, macht also aus einem true ein false und umgekehrt (ähnlich wie wenn man eine Münze umdreht).

3.2 Bedingungen mit Strings

Bei Strings darf keine der obigen 6 Bedingungen verwendet werden, nicht einmal == und !=, wobei die Erklärung dazu etwas kompliziert ist.

Es hat damit zu tun, dass der Datentyp String eigentlich ein Objekt ist (siehe Objekt-Orientierung), und mit dem == Zeichen bei Objekten nicht der Inhalt verglichen wird, sondern die Adresse im Speicher. Du musst den Grund für das Problem nicht zwingend wissen, aber die Lösung schon 😉

Stattdessen verwendest du die Methoden .equals() bzw.  !.equals():

String ort = "Linz";
// falls ort == Linz ist
if (ort.equals("Linz")) {
    
}
// falls ort != Linz ist
if (! ort.equals("Linz")) {
    
}

3.3 Bedingungen mit dem Datentyp char

Beim Datentyp char kannst du alle der obigen 6 Grund-Bedingungen verwenden. Allerdings musst du bei allen außer == und != aufpassen, was ein größer oder kleiner beim Datentyp char bedeutet.

Ein jeder char hat im Hintergrund eine int-Nummer, die seine Position innerhalb der ASCII-Tabelle beschreibt:

ASCII Tabelle

Der Buchstabe ‚A‘ hat beispielsweise den int-Wert 65 im Hintergrund, der Buchstabe ‚a‘ den Wert 97.

Ob du nun mit dem Buchstaben ‚A‘ vergleichst oder mit der Zahl, die dahinter steht, das Ergebnis wäre das selbe:

char x = 'A';
if (x >= 'A') {
    
}
if (x >= 65) {
    
}

Allerdings ist jedes Zeichen in der ASCII-Tabelle mit einer int-Zahl >= 65 „größer“ als der Buchstabe ‚A‘, also z.B. auch die geschwungenen Klammern (ASCII Code 123 und 125).

Du musst dabei übrigens immer unter der Spalte „dec“ (decimal) nach der entsprechenden int-Zahl schauen – die anderen beiden Spalten sind andere Zahlen-Systeme wie hexadezimal, die nicht bei 10 eine Stelle dazu geben, sondern z.B. erst bei 16 (hexa = 16).

Im nächsten Tutorial werden wir uns nun anschauen, wie wir komplexere if else Bäume zusammenbauen können 🙂

Diskussion zum Tutorial

Du bist aus Oberösterreich? Dann nütze doch auch unsere flexiblen Programmier-Kurse in Kirchdorf - oder gib deine Website gerne in die guten Hände unserer erfahrenen Wichtel-Webdesign-Agentur.