Dienstag, 5. November 2013

Wiederholungsanweisungen in Java

Wichtig für Smartphonebenutzer

Mit den Wiederholungsanweisungen können Anweisungen oder Anweisungsblöcke mehrfach hintereinander ausgeführt werden.

Die for-Anweisung
Hier ein Beispiel:

  1. for(int i = 0; i < 10; i++) {
  2.         System.out.println(i);
  3. }

In der Zeile 1, in den beiden ( und ) steht die Initialisierung im Beispiel ist es:

int i = 0;

Dann folgt der Ausdruck:

i < 10;

und zum Schluss die Updateliste:

i++

Am Anfang der for-Anweisung müssen wir eine Initialisierung eines Datentyps machen, dass heißt wir müssen einen Datentyp deklarieren und mit einem Wert initialisieren (die Initialisierung wird nur einmal in der for-Anweisung ausgeführt). Hier im Beispiel ist es die Wert 0. Danach kommt der Ausdruck, hier ist es i < 10, es wird ein boolean Ergebnistyp erwartet. Solange der Ergebnistyp true ist (also i kleiner als 10 ist) wird die for-Anweisung wiederholt. In der Updateliste wird  i inkrementiert. Unser Beispiel macht nichts anderes als von 0 bis 9 zu zählen. Dann ist der Ausdruck false und die for-Anweisung wird nicht mehr wiederholt.

Hier ist die Konsolenausgabe des Beispiels:


Wenn wie in unserem Beispiel nur eine Anweisung im Anweisungsblock steht, kann die { und } auch weggelassen werden. Die for-Anweisung verhält sich dabei wie die if-Anweisung. Es ist z.B. auch dieses möglich:

  1. for(int i = 0, t = 10; i < 10 && t > 0; i++, t--) {
  2.         System.out.println("Variable i = " + i);
  3.         System.out.println("Variable t = " + t);
  4. }

Es ist also auch möglich mehrere Variablen in der for-Anweisung  zu behandeln, sie müssen nur durch ein Komma in der Initialisierung und Updateliste getrennt werden. Im Ausdruck können die Logischen-Operatoren verwendet werden. Hier wird i inkrementiert und t dekrementiert.

Hier noch ein Beispiel:

  1. for(int i = 0, t = 10; i < 10; i += 2, t = t * 3) {
  2.         System.out.println("Variable i = " + i);
  3.         System.out.println("Variable t = " + t);
  4. }

Wie man sieht gibt es sehr viele Möglichkeiten bei der for-Anweisung. Hier werden die Variablen i und t deklariert und jeweils mit einem Wert initialisiert. Im Ausdruck wird aber nur die Variable i überprüft ob i kleiner ist als 10, wenn ja (also true), dann wird die for-Anweisung wiederholt. In der Updateliste wird Variable i mit 2 addiert und die Variable t mit 3 multipliziert.

Es ist auch möglich die for-Anweisungen ineinander zu verschachteln, hier ist noch ein weiteres Beispiel:

  1. for (int y = 0; y < 3; y++) {
  2.         for (int x = 0; x < 3; x++) {
  3.                 System.out.print((x + y) + " ");
  4.         }
  5.         System.out.println();

Die for-Anweisung in Zeile 1 wird ausgeführt, danach wird der Ausdruck auf den Ergebnistyp geprüft, wenn der Ergebnistyp true ist, wird die Variable y inkrementiert und der Anweisungsblock ausgeführt. Damit wird die for-Anweisung in Zeile 2 ausgeführt, die im Anweisungsblock steht und die Variable x wird inkrementiert. In Zeile 3 wird im Konsolenfenster die Summe von x und y ausgegeben. Die for-Anweisung von Zeile 2 wird wiederholt bis der Ergebnistyp im Ausdruck false ist. Mit System.out.println(); in Zeile 5 wird ein Zeilenumbruch erstellt. Jetzt wird die Variable y inkrementiert und die for-Anweisung aus Zeile 2 initialisiert x neu, die Variablen x und y werden addiert und deren Summe auf der Konsole ausgegeben. Jetzt wiederholt sich die for-Anweisung in Zeile 2 bis der Ergebnistyp im Ausdruck false ist. So geht es weiter bis die for-Anweisung in Zeile 1 auch der Ausdruck false erhält.

Hier die Konsolenausgabe:


Es gibt noch eine weitere vereinfachte for-Anweisung. Diese werden wir aber in einen späteren Tutorial besprechen, da uns dafür noch die Kenntnisse fehlen. Hier ein Beispiel:

  1. for(int i : t) {
  2.         ...
  3. }

Mit der for-Anweisung kann auch eine Endlosschleife erzeugt werden. Hier ein Beispiel:

  1. for(;;) {
  2.         ...
  3. }

Bei dieser for-Anweisung sollte immer eine  if-Anweisung mit einer break-Anweisung eingebaut sein, damit die Endlosschleife auch beendet werden kann. Eine switch-Anweisung ist hier leider nicht für das Beenden der for-Anweisung möglich.

Hier noch ein Beispiel:

  1. for(boolean b = true; b;) {
  2.         ...
  3. }

Diese for-Anweisung, ist auch eine Endlosschleife. Wir können diese Schleife beenden wenn wir eine Endscheidungsanweisung (if-Anweisung oder switch-Anweisung) einbauen die den Wert b false zuweist.

Die while-Anweisung


  1. int i = 0;
  2. while(< 10) {
  3.         System.out.println(i++);
  4. }

In den ( und ) steht der Ausdruck der while-Anweisung. Wenn die while-Anweisung nur eine Anweisung hat, kann die { und } weggelassen werden. Der Ausdruck der while-Anweisung  erwartet den Ergebnistyp boolean, solange dieser Wert true ist, wird die Anweisung bzw. der Anweisungsblock wiederholt.

Auch bei der while-Anweisung, kann eine Endlosschleife geschrieben werden:

  1. while(true) {
  2.         ...
  3. }

Die while-Anweisung kann auch wie die for-Anweisung verschachtelt werden.

Die do-Anweisung


  1. int i = 10;
  2. do {
  3.         System.out.println(i--);
  4. } while(> 0);

Bei der do-Anweisung wird zuerst die Anweisung bzw. der Anweisungsblock (der in { und } steht) ausgeführt und danach erst der Ausdruck der while-Anweisung ausgeführt. Die while-Anweisung muss hier mit dem Semikolon beendet werden.

Keine Kommentare:

Kommentar veröffentlichen