| » Tutorial / Java Grundlagen / Bedingungen |
|
Kapitel sechs ist dem Thema der Bedingungen gewidmet. Hier dreht sich alles um Ausdrücke, die auf Grund einer erfüllten oder nicht erfüllten Bedingung den Programmlauf beeinflussen können. Tatsächlich kommt diesem Sprachelement eine große Bedeutung zu. Folgende Bedingungen werden wir betrachten. |
|
» If » Else » Switch |
| » If | nach oben « |
|
Die If - Bedingung ist die einfachste unserer Konstrukte. Sie prüft lediglich einen Ausdruck, ob dieser wahr oder falsch ergibt. Bei einer positiven Überprüfung wird entweder die nächste Anweisung oder der direkt folgende Block von Anweisungen ausgeführt. Das Verfahren soll mit der folgenden Grafik verdeutlicht werden.
|
|
| Syntax | |
if(Bedingung)
// Anweisung
|
|
|
Das folgende Beispiel testet eine Variable, in deren Abhängigkeit eine Zeile auf dem Monitor ausgegeben wird. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
boolean b = true;
if(b)
System.out.print("ProgrammersBase.NET");
}
}
|
|
| Ausgabe | |
ProgrammersBase.NET
|
|
|
Das hier gezeigte Beispiel prüft unsere Variable, ob diese True oder False ergibt. In unserem Fall wird daraufhin die unmittelbar folgende Anweisung ausgeführt, auch wenn diese mit mehreren Leerzeilen von der Bedingung entfernt gewesen wäre. Als Vergleichskriterium für unsere Bedingung können alle Ausdrücke verwendet werden, die einen booleschen Wert liefern. Zahlenwerte sind hingegen nicht zulässig. Um mehrere Anweisungen ausführen zu lassen, müssen diese lediglich in einen Block eingeschlossen werden. |
|
| Syntax | |
if(Bedingung)
{
// Anweisungen
}
|
|
|
Das folgende Beispiel verwendet zusätzlich einen Block für mehrere Anweisungen. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
boolean b = true;
if(b)
{
System.out.print("ProgrammersBase");
System.out.print(".NET");
}
}
}
|
|
| Ausgabe | |
ProgrammersBase.NET
|
|
| » Else | nach oben « |
|
Die Else - Anweisung ist an sich eine Erweiterung für ausführlichere Bedingungen. Sie ist in der Regel immer optional und kann auch nur in Verbindung mit einer If - Bedingung auftreten. Ihre Funktion liegt in der weiteren Verschachtelung von normalen Bedigungen. Dabei bildet sie mit dem vorhergehenden If - Zweig immer eine Einheit und stellt dessen Alternative dar, falls die Bedingung False liefern sollte.
|
|
| Syntax | |
if(Bedingung)
// Anweisung
else
// Anweisung
|
|
|
Das folgende Beispiel testet eine Variable, in deren Abhängigkeit entweder der erste oder der zweite Zweig ausgegeben wird. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
boolean b = false;
if(b)
System.out.print("ProgrammersBase.NET");
else
System.out.print("ProgrammersBase.DE");
}
}
|
|
| Ausgabe | |
ProgrammersBase.DE
|
|
|
Sollen wiederum mehrere Anweisungen pro Zweig ausgeführt werden, so müssen diese in einem Anweisungsblock stehen. |
|
| Syntax | |
if(Bedingung)
{
// Anweisungen
}
else
{
// Anweisungen
}
|
|
|
Im vorangegangenen Beispiel haben wir einen alternativen Zweig verwendet. Es ist auch möglich, weitere Unterbedingungen zu definieren, die bei einem zuvor als False ausgewerteten Ausdruck als alternative Bedingungen verwendet werden. Dazu folgendes Ablaufschema.
|
|
| Syntax | |
if(Bedingung)
// Anweisung
else if(Bedingung)
// Anweisung
else
// Anweisung
|
|
|
Diese Struktur wird nun wie folgt verdeutlicht. Unser Beispiel testes die erste Bedingung. Ergibt diese False, so wird zur Unterbedingung, sprich dem Else - If - Zweig, verzweigt und dessen Bedingung ebenfalls geprüft. Ergibt diese True, so wird seine Anweisung ausgeführt und danach die Schleife abgebrochen. Erst wenn beide Zweige False liefern, kommt es zur Nutzung des letzten alternativen Else - Zweiges. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
boolean a = false;
boolean b = true;
if(a)
System.out.print("ProgrammersBase.NET");
else if(b)
System.out.print("ProgrammersBase.DE");
else
System.out.print("ProgrammersBase");
}
}
|
|
| Ausgabe | |
ProgrammersBase.DE
|
|
| » Switch | nach oben « |
|
Umfangreiche Verschachtelungen von If - Bedingungen erweisen sich häufig als umständlich. Aus diesem Grund gibt es die sogenannte Mehrfachauswahl in Form der Switch - Bedingung. Sie entspricht in ihrem Ablauf dem der Else - Bedingungen, übernimmt allerdings das Kriterium als Parameter und testet es in verschiedenen Zweigen jeweils extra. |
|
| Syntax | |
switch(Parameter)
{
case Wert1: // Anweisungen
break;
case Wert2: // Anweisungen
break;
default: // Anweisungen
}
|
|
|
Als Parameter für den Vergleich sind alle Integetypen zulässig. Dazu folgendes Beispiel. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
int i = 2;
switch(i)
{
case 1: System.out.print("Option 1"); break;
case 2: System.out.print("Option 2"); break;
case 3: System.out.print("Option 3"); break;
default: System.out.print("unbekannte Option");
}
}
}
|
|
| Ausgabe | |
Option 2
|
|
|
Die Switch - Bedingung prüft nun den übergebenen Wert in jedem Case - Zweig. Trifft er zu, so werden alle folgenden Anweisungen bis zum nächsten Zweig ausgeführt. Interessant ist die letzte Break - Anweisung jedes Zweiges. Sie bricht die Bedingung ab, da ansonsten der nächste Zweig ebenfalls mit dem Parameter verglichen werden würde. In unserem Fall würde dies bedeuten, dass auch alle Werte die größer sind als unser Parameter als zutreffend anerkannt und somit ebenfalls ausgegeben werden. Der letzte Zweig wird durch den Default - Zweig eingeleitet. Er ist optional und wird nur dann ausgeführt, wenn keiner der Case - Zweige als Bedingung zutraf. |
|
| « Kapitel | Kapitelübersicht | nach oben | Kapitel » |