Java Schnellstart – If-Befehl

In dieser Lektion wirst du ein sehr bedeutendes Konzept jeder Programmiersprache kennenlernen, nämlich If-Entscheidungen.

Was sind If-Entscheidungen?

Mit If-Entscheidungen ist es möglich einen bestimmten Code auszuführen, wenn eine bestimmte Bedingung wahr oder falsch ist. Diese "Bedingung" wird in Form eines Boolean definiert. Dafür verwendet man das Schlüsselwort if und schreibt in runde Klammern die Bedingung.

Code-Beispiel - Das If sieht folgendermaßen aus:

class MainClass {
	public static void main(String[] args)
	{
		boolean fünfGrößerZwei = 5 > 2; // fünfGrößerZwei ist "true" (weil 5 > 2)
		if(fünfGrößerZwei) {
			System.out.println("Die Zahl ist größer als fünf"); // wird ausgeführt, wenn fünfGrößerZwei gleich "true" (das ist hier der Fall)
		System.out.println("Test 1 beendet");
                }
	}
}

Dieser Code gibt in der Konsole den Text "Die Zahl ist größer als fünf" aus, weil die Bedingung funfGrößerZwei auf "true" evaluiert (5 > 2 ist wahr/true). Wäre das nicht der Fall, also wäre der Wert "false", so würde der Code innerhalb der If-Entscheidungen nicht ausgeführt.

Um das zu verdeutlichen, findest du hier das nächste Code-Beispiel:

class MainClass {
	public static void main(String[] args)
	{
		boolean b1 = false;
		if(b1) {
			System.out.println("Wird nicht ausgeben"); // Dieser Code wird nicht ausgeführt, weil b1 = false
                }
		System.out.println("Test beendet"); // wird ganz normal ausgeführt, weil dieser Code nicht innerhalb der If-Entscheidung ist
       }
}

Mehr als eine Zeile Code ausführen

Wie du gesehen hast, kannst du deinen Code durch die If-Entscheidung  anhand von einer Bedingung ausführen. Sämtlicher Code, also auch mehrere Codezeilen, die innerhalb der If-Entscheidung definiert werden, werden ausgeführt, sobald die If-Bedingung "wahr" (true) ist. Innerhalb der If-Entscheidung bedeutet in diesem Falle, zwischen der geöffneten und geschlossenen geschweiften Klammer hinter dem "if"-Befehl.

Zur Verdeutlichung schauen wir uns folgenden Code an:

class MainClass { 
	public static void main(String[] args) 
	{ 
                // 5 == 5 ist true, der Code innerhalb der geschweiften Klammern wird ausgeführt
		if(5 == 5) {
                     System.out.println("Fünf gleich Fünf");
                     System.out.println("Dieser Code wird ausgeführt, wenn Bedingung in if true"); 
	        }
               System.out.println("Dieser Code wird immer ausgeführt");
         }
}

Im obigen Beispiel siehst du ebenso, dass du in der Bedingung keinen expliziten Boolean (true oder false) übergeben musst. In unserer Bedingung benutzen wir einen Vergleichsoperator und prüfen, ob die Zahl 5 gleich 5 ist (5 == 5). Da die Bedingung wahr/true ist (ja 5 ist gleich 5), wird die If-Entscheidung ausgeführt.

Else: Code bei nicht Erfüllung der Bedingung ausführen

Oftmals ist es so, dass wir auch darauf reagieren wollen, wenn eine bestimmte Bedingung nicht erfüllt ist. Wir wollen also bestimmten Code ausführen, wenn unsere Bedingung zutrifft und andererseits wiederum anderen Code ausführen, wenn diese nicht zutrifft. Dafür könntest du zum Beispiel zwei If-Verzweigungen definieren und die eine Bedingung mit (!) negieren:

class MainClass {
	public static void main(String[] args)
        {
           boolean fünfGrößerZehn = 5 > 10; // false
           if(fünfGrößerZehn)
           {
                 // wenn fünf größer Zehn wird dieser Code-Block ausgeführt
           }
           if(!fünfGrößerZehn)
           {
                // wenn fünf nicht größer Zehn wird dieser Code-Block ausgeführt
                // ist hier der Fall, weil 5 > 10 = false ==> mit negation = true
           }
        }
}

Diese Lösung funktioniert zwar, ist aber unschön, weil man einerseits die Bedingung zweimal definieren muss und andererseits nicht direkt sieht, dass diese zwei Bedingungen zusammenhängen.

In Java und vielen anderen Programmiersprachen gibt es deshalb ein weiteres Schlüsselwort, nämlich else. Der else-Teil wird immer ausgeführt, wenn die Bedingung für den If-Block unwahr (false) ist.

Merke dir Folgendes: Entweder wird der If-Block ausgeführt oder der else-Block. Beide werden nie gemeinsam ausgeführt!

Im Code sieht ein if/else-Block folgendermaßen aus:

class MainClass { 
	public static void main(String[] args) { 
		boolean fünfGrößerZehn = 5 > 10; // false 
		if(fünfGrößerZehn) 
		{ 
			// wenn fünf größer Zehn, wird dieser Code-Block ausgeführt 
		} 
		else { 
			// wenn fünf nicht größer Zehn, wird dieser Code-Block ausgeführt 
			// ist hier der Fall, weil 5 > 10 = false
		} 
	} 
}

Mischung aus else-if:

Möchtest du den Else-Teil nur dann ausführen, wenn eine bestimmte Bedingung gegeben ist, dann kannst du else if verwenden:

int alter = 13;
if(alter >= 16)
{
	System.out.println("Du darfst die Achterbahn alleine fahren");
}
else if(alter >= 12)
{
	System.out.println("Du darfst die Achterbahn in Begleitung eines Erwachsenen fahren");
}
else
{
	System.out.println("Du darfst die Achterbahn nicht fahren");
}

Wichtig zu wissen: Es ist möglich mehr als ein else if zu definieren.

Erklärung obiger Code:

  1. Zuerst wird das if abgefragt. Wenn der Wert wahr ist, dann wird der If-Block ausgeführt.
  2. Ansonsten wird die Bedingung des else-if abgefragt und dort der Code-ausgeführt, wenn der Wert der dort definierten Bedingung wahr ist.
  3. Trifft nichts zu, so wird der else-Block ausgeführt.

Logikoperatoren: Bedingungen verknüpfen

Du hast bereits gesehen, wie wir Vergleichsoperatoren bei If-Verzweigungen verwenden können. Nun möchte ich dir zeigen, wie du Logikoperatoren verwendst.

Code ausführen, wenn zwei Bedingungen wahr (true) sind:

Du musst hier nur den bekannten UND-Operator (&&) verwenden.

boolean bedingung1 = true;
boolean bedingung2 = true;
if(bedingung1 && bedingung2)
{
	// Code wird ausgeführt, da BEIDE Bedingungen "true" sind
}

Code ausführen, wenn eine Bedingung oder eine andere wahr (true) ist:

Hier kannst du den ODER-Operator (||) verwenden.

boolean bedingung1 = false;
boolean bedingung2 = true;
if(bedingung1 || bedingung2)
{
	// Code wird ausgeführt, da mindestens eine Bedingung "true" ist
}

Code-Aufgabe - Jetzt bist du gefragt: Bewerber filtern

Für ein Bewerbungssystem für eine Stelle als Softwareentwickler, soll automatisch entschieden werden, ob ein Bewerber das Job-Angebot bekommt oder nicht.

Folgendes Kriterium ist dafür ausschlaggebend: Der Bewerber hat Programmierkenntnisse (true)

Trifft die oben genannte Bedingung nicht zu, soll er automatisch eine Absage erhalten.

Deine Aufgabe besteht darin, die zwei System.out.println() mit if und else so zu verschachteln, dass diese entsprechend ausgeführt werden. Die Lösung findest du unter dem Editor.

[lp_spoiler title="Lösung anzeigen" class="da"]

class Main {
  public static void main(String[] args) {
    boolean programmierkenntnisse = true; // Hat der Kandidat Programmierkenntnisse?

    if (programmierkenntnisse)
    {
	    System.out.println("Sie haben den Job!");
    } else 
    {
    	System.out.println("Leider müssen wir Ihnen absagen.");
    }
  }
}
Code ausprobieren ×

[/lp_spoiler]

Fazit

If-Verzweigunen wirst du in der Programmierung sehr häufig benötigen. Wie du gesehen hast, kannst du auch Logikoperatoren und Vergleichsoperatoren anwenden, um Bedingungen zu erstellen.

Mit dem Schlüsselwort else lassen sich Code-Blöcke definieren, die ausgeführt werden, wenn die Bedingung nicht erfüllt wird.

Bei else if, kannst du dagegen für den else-Block eine zusätzliche Bedingung angeben.