While

Wenn man nicht genau weiß, wie oft eine Schleife durchlaufen werden muss, bietet es sich an eine Bedingung zu prüfen. Welche Bedingung das ist, hängt vom Programm ab. In unserem Kaffeetassen Programm haben wir in Version 2 einen Index eingeführt. Diesen können wir als Bedingung benutzen.

Das Kaffeetassen Programm in der ersten Version findet ihr hier.
Das Kaffeetassen Programm in der zweiten Version findet ihr hier.
Das Kaffeetassen Programm in der dritten Version findet ihr hier.

Als erstes müssen wir uns überlegen, an welcher Stelle das Programm geändert werden muss. Ich denke die Ausgabe im Konstruktor der Klasse Kaffeetassen ist ein guter Kandidat.


                         [...]
                         // Erst einmal eine Überschrift
                         System.out.println("Meine Kaffeetassen:");

                         // Dann die einzelnen Tassen
                         for(int i = 0; i < 5; i++) {
                            tassen[i].ausgeben();
                         }
                         [...]

In der zweiten Version hatten wir mit einer Zählschleife den Index auf 5 festgelegt( i < 5;). Nun wollen wir die Schleife solange ausführen lassen bis der Index kleiner oder gleich 0 wird, also alle Tassen ausgegeben wurden. Wir müssen also erst einmal feststellen wie groß der Index ist, und dann die Bedingung entprechend anpassen. Alles klar?
Fangen wir mit dem Index an. Mit Tasse Tassen[] = new Tasse[5]; hatten wir festgelegt das der Index 5 Elemente 0-4 enthält. Jetzt stellen wir uns vor, wir wissen nicht wie groß der Index ist. Eine Situation in die man später immer wieder kommen kann, gerade wenn man z.B. Datenbanken abfragt. Wie gut das wir dmit JAVA eine Objektorientierte Programmiersprache haben. Unser Array hat natürlich auch eigene Eigenschaften, und eine ist die Länge des Arrays .length. Also können wir mit max = Tassen.length der Variablen max die Länge des Arrays zuweisen.
Anmerkung: Im Gegensatz zur Zählschleife mit for(), müssen wir hier i vorher anlegen.


                 [...]
                 // Als Platzhalter für unsere Tassen benutzen wir ein Array mit 5 Elementen
                 Tasse Tassen[] = new Tasse[5];

                 // Kaffeetassen haben die Eigenschaften: Farbe, Höhe, Durchmesser, Henkel, Aufdruck
                 Kaffeetasse () {
                         Tassen[0] = new Tasse("Weiß", 10, 8, "Ja", "KIKISWEB");
                         Tassen[1] = new Tasse("Schwarz", 10, 8, "Ja", "JAVA");
                         Tassen[2] = new Tasse("Blau", 10, 8, "Ja", "SCHALKE");
                         Tassen[3] = new Tasse("Rot", 10, 8, "Ja", "BAYERN");
                         Tassen[4] = new Tasse("Gelb", 10, 8, "Nein", "BVB");

                 // Hier stellen wir uns vor, dass wir nicht mehr wissen, was wir gerade getan haben
                 int max, i;.// Die Variablen max und i erzeugen
                 max = Tassen.length;
                 [...]

Als nächstes kommt unsere Schleife.


                         [...]
                         // Erst einmal eine Überschrift
                         System.out.println("Meine Kaffeetassen:");

                         // Dann die einzelnen Tassen
                         i = max;.// Den Index auf den Maximalwert setzen
                         while(i >= 0) {
                            Tassen[i].ausgeben();
                            --i;.// i - 1
                         }
                         [...]

Vor der Schleife weisen wir der Variable i den Wert aus max zu. Warum ausserhalb der Schleife? Na, weiß es jemand?
Klar weil sonst bei jedem Durchlauf der Schleife i wieder auf den Wert von max gesetzt wird. Dadurch erzeugen wir eine Endlosschleife, weil die Bedingung, die wir am Ende abfragen, nie eintreffen wird. i bleibt immer gleich.
Unsere Schleife beginnt mit while(i >= 0) {. Also auf deutsch "solange die Bedingung zutrifft, tu was". In der nächsten Zeile werden, wie vorher auch, die einzelnen Tassen ausgegeben. Die nächste Zeile sieht wieder komisch aus. --i ist aber nur eine Kurzform für i = i-1;. Programmierer sind halt faul. Es wird also bei jedem Durchlauf 1 vom Wert i abgezogen. Dann wird das "tu was" mit } geschlossen. Die Bedingung, in unserem Fall while(i >= 0); wird VOR dem "tu was" abgefragt, das heißt, wenn die Bedingung nicht zutrifft wird auch nichts gemacht.

Das ganze Programm "am Stück" gibt es hier.

Weiter geht es mit Abfragen.

Mit JAVA programmieren

Als Entwicklungsumgebung benutze ich NetBeans 7.

JAVA gibt es hier.