Home > Informatik > Stufe EF > Folge 7 (Arrays)

7.1 Einfache Arrays, Teil 2

Arrays - Objekt-Arrays - verstehen - Held

5. Eine Klasse für natürliche Zahlen

Unter den natürlichen Zahlen versteht man in der Regel die positiven ganzen Zahlen $\mathbb{N}$, mit $\mathbb{N}$ = {1, 2, 3, 4, ...}.

Hinweis für Fachkolleginnen und Fachkollegen

Ob die Zahl 0 zu den natürlichen Zahlen gehört, ist eine Frage der verwendeten Konvention. In der Mathematik findet man sowohl die Definition $\mathbb{N}$ = {1, 2, 3, ...} als auch $\mathbb{N}$ = {0, 1, 2, 3, ...}.

Um Missverständnisse zu vermeiden, werden teilweise die Schreibweisen $\mathbb{N}^* = \{1, 2, 3, ...\}$ bzw. $\mathbb{N}_0 = \{0, 1, 2, 3, ...\}$ verwendet. In diesem Skript wird $\mathbb{N}$ vereinfachend für die positiven natürlichen Zahlen verwendet, die 0 ist also nicht enthalten.

Wir wollen nun eine Klasse NZahlen schreiben, mit der wir die natürlichen Zahlen sowie einige Operationen auf $\mathbb{N}$ modellieren können.

Natürliche Zahlen können in Java gut durch den Datentyp int dargestellt werden. Bei der Implementierung müssen wir dann nur darauf achten, dass wir keine negativen Zahlen und keine 0 verwenden, sondern nur positive ganze Zahlen.

Als Erstes erzeugen wir ein Array, das aus 100 int-Elementen besteht. Nach den Ausführungen in Teil 1 sollte dies für Sie kein Problem mehr sein.

5.1 Deklaration und Initialisierung des Arrays

				public class NZahlen
				{
					 int[] zahlen;

					 public NZahlen()
					 {
						 zahlen = new int[100];
					 }
				}

Achtung: Die Klasse heißt NZahlen, das Array dagegen zahlen. Diese beiden Bezeichner sollten nicht verwechselt werden.

5.2 Eine einfache Ausgabe-Methode

				public void ausgeben()
				{
					 for (int i=0; i < zahlen.length; i++)
						 System.out.println("Zahl " + i + " = " + zahlen[i]);
				}

Wenn wir diese Methode ausführen, sehen wir, dass alle Arrayelemente den Wert 0 haben. Tatsächlich werden die Elemente eines neu erzeugten int-Arrays automatisch mit dem Wert 0 initialisiert. Das sind aber noch keine natürlichen Zahlen im hier verwendeten Sinne, denn diese beginnen mit der Zahl 1 und nicht mit der 0.

5.3 Das Array mit Zufallszahlen füllen

Wir wollen das Array nun mit Zufallszahlen aus $\mathbb{N}$ = {1, 2, 3, ..., 1000} füllen. Dazu muss unser Programm die Java-Klasse Random aus dem Paket java.util importieren. Das geschieht mit der Zeile

import java.util.Random;

ganz oben im Quelltext, noch vor der Deklaration der Klasse.

Mit der folgenden Methode weisen wir dann jedem der 100 Arrayelemente eine solche Zufallszahl zu:

				public void mitZufallszahlenBelegen()
				{
					 Random generator = new Random();

					 for (int i=0; i < zahlen.length; i++)
						 zahlen[i] = generator.nextInt(1000) + 1;
				}

Das Objekt generator der Klasse Random ist unser Zufallszahlengenerator. Mit der Methode nextInt(1000) erzeugen wir eine Zufallszahl zwischen 0 und 999. Wenn wir noch 1 addieren, erhalten wir die gewünschte Zufallszahl zwischen 1 und 1000.

5.4 Zwischenstand

Das bisherige Programm müsste jetzt so aussehen:

				import java.util.Random;

				public class NZahlen
				{
					 int[] zahlen;

					 public NZahlen()
					 {
						 zahlen = new int[100];
					 }

					 public void ausgeben()
					 {
						 for (int i=0; i < zahlen.length; i++)
							 System.out.println("Zahl " + i + " = " + zahlen[i]);
					 }

					 public void mitZufallszahlenBelegen()
					 {
						 Random generator = new Random();

						 for (int i=0; i < zahlen.length; i++)
							 zahlen[i] = generator.nextInt(1000) + 1;
					 }
				}

6. Übungen

Übung 7.1-1 (*)

Schreiben Sie für die Klasse NZahlen eine sondierende Methode

public int gibSumme()

welche alle 100 Zufallszahlen des Arrays addiert und das Ergebnis zurückliefert.

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Übung 7.1-2 (*)

Schreiben Sie für die Klasse NZahlen eine sondierende Methode

public int gibKleinsteZahl()

welche alle 100 Zufallszahlen des Arrays durchsucht und als Ergebnis die kleinste Zahl zurückliefert.

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Übung 7.1-3 (**)

Schreiben Sie für die Klasse NZahlen eine sondierende Methode

public int gibAnzahlVon(int z)

welche als Ergebnis zurückliefert, wie oft die Zahl z im Array vorkommt.

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Experten-Übung 7.1-4 (***)

1.) Reduzieren Sie in Ihrem Quelltext die Zahl der Arrayelemente auf 20.

2.) Sorgen Sie dafür, dass die Arrayelemente nur mit Zufallszahlen zwischen 1 und 50 belegt werden.

3.) Schreiben Sie dann eine Methode

public void zeigeSterne()

welche die Werte der Arrayelemente jeweils als eine Reihe von Sternzeichen (*) darstellt.

Angenommen, das erste Arrayelement enthält die Zahl 17, das zweite Element die Zahl 30 und das dritte Element die Zahl 12. Dann müssen die ersten drei Zeilen, die von dieser Methode in der Konsole ausgegeben werden, so aussehen:

				*****************
				******************************
				************

Die Konsole zeigt dann 20 Zeilen unterschiedlicher Länge an, da das Array jetzt aus 20 int-Elementen besteht.

Lösungsvorschlag auf den Seiten für Lehrer(innen) / Nähere Infos dazu

Seitenanfang -
Weiter mit Objekt-Arrays...