Java Kontrollstrukturen |
Der Syntaxgraph für den if-Befehl sieht so aus:
if ( Bedingung ) Statement; if ( Bedingung ) Statement1; else Statement2; |
Ein typisches Beispiel ist die Abfrage vor einer Division, ob der Nenner eventuell 0 ist.
if (Nenner==0)
System.out.println(“Nenner ist gleich 0”);
else
Ergebnis = Zaehler / Nenner;
Statt einer einzelnen Anweisung kann auch ein Block von Anweisungen verwendet
werden, indem die Anweisungen in geschweiften Klammern zusammengefasst werden.
if (Nenner==0) {
System.out.println(“Nenner ist gleich 0”);
} else {
Ergebnis = Zaehler / Nenner;
}
if (b1)
if (b2)
a1;
else
a2;
|
Der else-Zweig mit a2 gehört trotz der anders scheinenden
Einrückung zum if mit b2.
Fallunterscheidung
Eine Sonderform der Abfrage ist die Fallunterscheidung. Hier wird bei
abzählbaren Variablentypen der Inhalt einer Variablen mit verschiedenen
Konstanten verglichen.
switch (ausdruck)
{
case constant1:
anweisung1;
case constant2:
anweisung2;
break;
case constant3:
anweisung3;
break;
default:
anweisung4;
}
|
Der ausdruck muss vom Typ byte, short, char oder int sein. Ist der Wert von ausdruck gleich constant1, so wird die anweisung1 und die anweisung2 ausgeführt. Hinter anweisung2 sorgt das break dafür, dass die weiteren Anweisungen nicht ausgeführt werden.
Der default-Zweig wird angesprungen, wenn keine der Konstanten
dem switch-Ausdruck entspricht.
Der Syntaxgraph für die Fallunterscheidung sieht so aus:
Korrekterweise müsste der Syntaxgraph so umgebaut werden, dass nur ein
default-Zweig möglich ist. Allerdings wird er dadurch auch etwas
unübersichtlich.
Bedingungen
Für den Vergleich numerischer Werte gibt es die folgenden Operatoren:
| Operator | Bedeutung |
|---|---|
| a == b | a gleich b? |
| a != b | a ungleich b? |
| a > b | a größer als b? |
| a >= b | a größer oder gleich b? |
| a < b | a kleiner als b? |
| a <= b | a kleiner oder gleich b? |
Darüber hinaus gibt es Verknüpfungen von booleschen Ausdrücken. Die Verknüpfung UND ist wahr, wenn alle Teilausdrücke wahr sind. Die Verknüpfung ODER ist wahr, wenn mindestens ein Teilausdruck war ist. Der NOT-Operator hat nur einen Operanden. Das Ergebnis ist wahr, wenn der Operand nicht wahr ist.
| Verknüpfung | Gesamtausdruck ist genau dann wahr, wenn... |
|---|---|
| (a == b) && (c == d) | ...alle Teilausdrücke wahr sind |
| (a == b) || (c == d) | ...mindestens ein Teilausdruck wahr ist |
| !a | ...wenn a falsch ist. |
while ( Bedingung )
Anweisung
|
Das folgende Beispiel errechnet, wie sich angelegtes Kapital entwickelt, wenn die Zinsen nicht ausgeschüttet werden, sondern beim Kapital bleiben. Dadurch ergeben sich Zinseszinsen.
public class Kapital {
public static void main(String[] args) {
double kapital = 0.00;
int jahr = 0;
while (jahr<10) {
kapital = kapital * 1.06 + 2400;
jahr = jahr + 1;
System.out.print(jahr);
System.out.print(" - ");
System.out.println(kapital);
}
}
}
Auch für die while-Schleife gibt es einen Syntaxgraph:
for ( Startanweisung ; Bedingung ; EndAnweisung )
SchleifenAnweisung
|
Ein Beispiel macht das sofort deutlich:
for (i=0; i<10; i++)
a[i] = 1;
|
i=0 ist die Startanweisung. Sie wird genau einmal vor Beginn der Schleife ausgeführt. i<10 ist die Bedingung, die am Schleifenkopf abgefragt wird. Da 0 kleiner als 10 ist, wird die Anweisung a[0]=1 ausgeführt. Am Ende der Anweisung wird die Endanweisung i++ ausgeführt und wieder zum Kopf gesprungen. Die Startanweisung i=0 wird nicht wieder durchgeführt, da sie nur einmalig vor Start der Schleife ausgeführt wird. Aber die Bedingung wird wiederum geprüft.
Insgesamt setzt das Beispiel die Werte von a[0] bis a[9] und damit die ersten zehn Elemente des Feldes a auf 1.
public class Kapital {
public static void main(String[] args) {
double kapital = 0.00;
for (int i=0; i<10; i++) {
kapital = kapital * 1.06 + 2400;
System.out.print(i+1);
System.out.print(" - ");
System.out.println(kapital);
}
}
}
do
Anweisung
while ( Bedingung )
|
Der Syntaxgraph sieht so aus
| Homepage - Java | (C) Copyright 1999, 2000, 2001, 2011 Arnold Willemer |