Zählschleifen

In vielen Fällen weiß man vorher wie oft eine Tätigkeit ausgeführt werden soll. In einem solchen Fall ist es am einfachsten eine Zählschleife zu benutzen. Wir werden also unser Kaffeetassen Programm so ändern, dass die 5 Tassen nicht mehr hintereinander ausgegeben werden, sondern in einer Schleife.

Das Kaffeetassen Programm in der ersten 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
                         kikisweb.ausgeben();
                         java.ausgeben();
                         schalke.ausgeben();
                         bayern.ausgeben();
                         bvb.ausgeben();
                 [...]

Wenn man sich diesen Teil des Programms ansieht, stellt man fest, dass es nicht wirklich pfiffig ist, jeder Tasse einen eigenen Namen zu geben. Man muss, um die Eigenschaften der Tassen auszugeben, jede Tasse einzeln aufrufen. Das schreit nach einer Schleife.
Als erstes benötigen wir etwas, mit dem wir die Tassen Zählen können. In der Programmierung nennt man so etwas einen Index. Ein Index gibt an, das wievielte Element einer Liste gerade bearbeitet wird. Um einen Index benutzen zu können, müssen wir unserem Programm sagen, das wir jetzt nicht mehr mit einzelnen Variablen arbeiten, sondern mit einer Liste von Variablen. Dies nennt man ein Array. Ein Array ist einfach eine Liste von Variablen eines Typs, bei dem die einzelnen Elemente durch einen Index gekennzeichnet werden.

Also nicht mehr:


                 [...]
                 // Als erstes werden Platzhalter für unsere Tassen erzeugt
                 Tasse kikisweb, java, schalke, bayern, bvb;

                 // Kaffeetassen haben die Eigenschaften: Farbe, Höhe, Durchmesser, Henkel, Aufdruck
                 Kaffeetassen () {
                         kikisweb = new Tasse("Weiß", 10, 8, "Ja", "KIKISWEB");
                         java     = new Tasse("Schwarz", 10, 8, "Ja", "JAVA");
                         schalke  = new Tasse("Blau", 10, 8, "Ja", "SCHALKE");
                         bayern   = new Tasse("Rot", 10, 8, "Ja", "BAYERN");
                         bvb      = new Tasse("Gelb", 10, 8, "Nein", "BVB");
                 [...]

Sondern :


                 [...]
                 // 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");
                 [...]

Es wird anstatt der einzelnen Variablen kikisweb, java, schalke, bayern, bvb eine Liste Tassen[] mit 5 Elementen erzeugt. Die Zeile Tasse Tassen[] = new Tasse[5]; erzeugt unser Array. Dabei ist Tasse der Typ der einzelnen Elemente. Tassen[] ist unser Variablenname mit einem Index in den eckigen Klammern. = new Tasse[5]; erzeugt dann unsere 5 Elemente und weist sie Tassen[] zu. Nun können wir den Elementen 0-4 des Arrays Tassen[] unsere 5 Tassen wie vorher zuweisen. (Bei einem Array zählt man übrigens immer von 0, nicht von 1)

Jetzt müssen wir nur noch die Ausgabe ändern. Dazu benutzen wir eine Zählschleife, die den Index unserer Tassen benutzt.
Also schreiben wir anstatt:


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

                         // Dann die einzelnen Tassen
                         kikisweb.ausgeben();
                         java.ausgeben();
                         schalke.ausgeben();
                         bayern.ausgeben();
                         bvb.ausgeben();
                         [...]

mit einer Zählschleife:


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

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

Oh Mann, das sieht wieder sooo Kompliziert aus !!
Ist es aber eigentlich nicht. for(int i = 0; i < 5; i++) erzeugt unsere Zählschleife. Als erstes wird mit int i = 0; eine neue Variable i erzeugt und der Startwert 0 zugewiesen (Unser Array beginnt auch mit 0). Dann kommt die Bedingung i < 5; - also i muss kleiner als 5 sein. Und mit i++ wird i bei jedem Durchlauf der Schleife um 1 erhöht. (Wie das funktioniert hatte ich bei den Zuweisungen erklärt.)

Tassen[i].ausgeben(); macht dann nichts anderes, als die Methode .ausgeben des Objekts Tassen[i] aufzurufen, wobei i nacheinander 0-4 ist. Wenn i = 5 wird, ist die Bedingung i < 5 nicht mehr erfüllt, und die schleife wird beendet.

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

Weiter geht es mit Do-Schleifen.

Mit JAVA programmieren

Als Entwicklungsumgebung benutze ich NetBeans 7.

JAVA gibt es hier.