1. Die Anweisung if else
Programme wären wenig nützlich, wenn sie immer dasselbe täten, unabhängig davon, wie sich die äußeren Umstände ändern. Ein Programm muss sich an verschiedene Situationen anpassen können und in manchen Fällen das eine, in anderen Fällen etwas anderes tun.
In Java ist das mithilfe der bedingten Anweisung umgesetzt – den Schlüsselwörtern if und else, die es erlauben, unterschiedliche Blockanweisungen abhängig von der Wahrheitswertigkeit einer Bedingung auszuführen.
Die bedingte Anweisung besteht aus drei Teilen: Bedingung, Anweisung 1 und Anweisung 2. Wenn die Bedingung wahr ist, wird die Anweisung 1 ausgeführt, andernfalls wird die Anweisung 2 ausgeführt. Die Anweisungen werden niemals gleichzeitig ausgeführt. Allgemein sieht diese Anweisung so aus:
if (condition)
command1;
else
command2;
if-else
if wird als „wenn“ übersetzt, und else als „sonst“. In Alltagssprache lässt sich das so formulieren:
If condition true, then
execute command1;
else
execute command2;
if-else in Alltagssprache
Beispiele:
// Auf dem Bildschirm wird ausgegeben: Sie sind noch ein Kind
int age = 17;
if (age < 18)
System.out.println("Sie sind noch ein Kind");
else
System.out.println("Sie sind bereits erwachsen");
// Auf dem Bildschirm wird ausgegeben: Warm
int temperature = 5;
if (temperature < 0)
System.out.println("Draußen herrscht Frost");
else
System.out.println("Warm");
// Auf dem Bildschirm wird ausgegeben: Sie können den Führerschein machen
int age = 18;
if (age == 18)
System.out.println("Sie können den Führerschein machen");
else
System.out.println("Sie können für ein Authen sparen");
2. Blockanweisung
Wenn Ihre Programm bei erfüllter (oder nicht erfüllter) Bedingung mehrere Anweisungen ausführen soll, können Sie diese zu einem Block zusammenfassen.
Um Anweisungen zu einem Block zusammenzufassen, müssen Sie sie in geschweifte Klammern „einschließen“. So sieht das im Allgemeinen aus:
{
command1;
command2;
command3;
}
Die Anzahl der Anweisungen in einem Block ist beliebig – auch null ist möglich.
Beispiele für die Kombination der Anweisung if-else mit einem Block:
// Auf dem Bildschirm wird ausgegeben: Du bist noch ein Kind. Streite nicht mit Erwachsenen
int age = 17;
if (age < 18)
{
System.out.println("Du bist noch ein Kind");
System.out.println("Streite nicht mit Erwachsenen");
}
else
{
System.out.println("Sie sind bereits erwachsen");
System.out.println("Ach, diese Jugend heutzutage");
}
// Auf dem Bildschirm wird ausgegeben: Warm
int temperature = 5;
if (temperature < 0)
{
System.out.println("Draußen herrscht Frost");
System.out.println("Setz eine Mütze auf");
}
else
System.out.println("Warm");
// Wird ein leerer Block ausgeführt. Auf dem Bildschirm wird nichts ausgegeben.
int age = 21;
if (age == 18)
System.out.println("Sie können den Führerschein bekommen");
else
{
}
3. Verkürzte Syntax der if-Anweisung
Wenn im Block else kein Code steht, kann man ihn weglassen. Dann hat die if-Anweisung die Form:
if (condition)
{
command1;
}
if
Beispiel:
int age = 19;
if (age >= 18)
{
System.out.println("Sie sind volljährig!");
}
Wie funktioniert das?
Wenn die Bedingung wahr ist, wird der Codeblock ausgeführt. Wenn sie falsch ist, passiert nichts – das Programm läuft einfach weiter.
Der else-Block ist im Programm zwar vorhanden, aber leer (zwischen den geschweiften Klammern stehen keine Anweisungen). Man kann ihn einfach entfernen – am Verhalten des Programms ändert sich nichts.
4. Kombination von Bedingungen: else if
Manchmal reicht nicht nur „ja/nein“, sondern man wählt aus mehreren Varianten. Hier hilft die Kombination else if:
if (condition1)
{
// Wird ausgeführt, wenn condition1 wahr ist
}
else if (condition2)
{
// Wird ausgeführt, wenn condition2 wahr ist und condition1 falsch ist
}
else
{
// Wird ausgeführt, wenn keine der obigen Bedingungen zutrifft
}
Beispiel:
int hour = 13;
if (hour < 12)
{
System.out.println("Guten Morgen!");
}
else if (hour < 18)
{
System.out.println("Guten Tag!");
}
else
{
System.out.println("Guten Abend!");
}
Was passiert hier?
- Wenn es vor 12 Uhr ist – Morgen.
- Wenn zwischen 12 und 18 Uhr – Tag.
- Wenn später – Abend.
- Das Programm wählt nur EINE Variante! Sobald eine Bedingung passt, werden die restlichen nicht einmal mehr geprüft.
5. Schematische Illustration: Verzweigungs-Flowchart
So sieht es als Blockschema aus:
Und wenn es mehrere Bedingungen gibt:
Das erinnert sehr an Abzweigungen in Pen-&-Paper-Rollenspielen: gehst du nach links – das eine, nach rechts – das andere, geradeaus – noch etwas!
6. Welche Bedingungen kann man prüfen?
In den runden Klammern nach if muss ein LOGISCHER Ausdruck stehen – dessen Ergebnis true oder false ist.
Wesentliche Vergleichsoperathenren:
| Operathenr | Bedeutung | Beispiel |
|---|---|---|
|
Gleich | |
|
Ungleich | |
|
Größer als | |
|
Kleiner als | |
|
Größer oder gleich | |
|
Kleiner oder gleich | |
Beispiele für Bedingungen:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Beachten Sie: = (ein Zeichen) – das ist eine Zuweisung. == (zwei Zeichen) – das ist ein Vergleich. Das ist einer der häufigsten Fehler unter Anfängern! Wenn Sie versehentlich schreiben:
if (x = 5) // FEHLER!
– der Compiler wird Sie zurecht darauf hinweisen.
7. Arbeit mit Strings in Bedingungen
Der Vergleich mit == funktioniert in Java korrekt für Zahlen. Gleitkommazahlen sollte man nicht mit == vergleichen, und Strings darf man nicht mit == vergleichen – für Strings verwenden Sie die Methode equals(), die die Inhalte der Strings vergleicht (und nicht die Referenzen).
Mehr über die Feinheiten des String-Vergleichs besprechen wir später. Wie man Strings korrekt vergleicht – im folgenden Beispiel:
String password = console.nextLine();
if (password.equals("qwerty")) // wir rufen die Methode equals() auf und übergeben den zweiten String
{
System.out.println("Sie sind eingeloggt!");
}
8. Besonderheiten und Nuancen:
Geschweifte Klammern: nötig oder nicht?
Wenn nach if oder else nur eine Anweisung steht, können die geschweiften Klammern weggelassen werden:
if (age > 18)
System.out.println("Sie sind über 18!");
// Aber sicherer ist es, sie IMMER zu schreiben:
if (age > 18)
{
System.out.println("Sie sind über 18!");
}
Tipp: Schreiben Sie stets mit Klammern. Das schützt vor vielen Fehlern, insbesondere wenn der Code erweitert wird.
Logische Fehler: Seien Sie aufmerksam bei Bedingungen!
Wenn Sie so schreiben:
if (age > 18)
System.out.println("Sie sind über 18!");
System.out.println("Willkommen!");
Dann liest der Compiler diesen Code so:
if (age > 18)
{
System.out.println("Sie sind über 18!");
}
System.out.println("Willkommen!");
Die zweite Zeile wird immer ausgeführt – Klammern sind nötig, damit beide Zeilen im „Zweig“ liegen.
GO TO FULL VERSION