Informatik · Klasse 6–12 · aktualisiert
Arrays verstehen: Index, Länge und Zugriff
Du lernst, wie ein Array viele Werte unter einem Namen speichert, wie Indizes funktionieren und wie du Grenzfehler in Java vermeidest.
0 von 11 Aufgaben gelöst
Kurz gesagt
Ein Array ist in Java eine Sammlung von Daten des gleichen Typs. Die Plätze sind durchnummeriert, die Nummer heißt Index, und der erste Platz hat den Index 0. Bei einem Array mit der Länge length sind die Indizes 0 bis length − 1 gültig. Ein geschachteltes Array ist ein Array aus Arrays.
Stell dir vor, du willst die Punkte von hundert Spielern speichern. Hundert einzelne Variablen mit hundert Namen wären ein Albtraum. Ein Array löst das Problem mit einem Namen und einer Nummer pro Platz. Dabei passieren leicht Zählfehler, und die lernst du hier zu vermeiden.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Eine Variable ist ein benannter Speicherplatz für einen Wert. Oft brauchst du mehrere Werte, die zusammengehören und vom gleichen Datentyp sind, zum Beispiel nur Zahlen oder nur Namen. Jeden dieser Werte einzeln zu deklarieren und zu verarbeiten, wäre sehr aufwendig.
Deshalb gibt es in Java Arrays. Ein Array ist eine Sammlung von Daten des gleichen Typs. Alle Variablen im Array haben einen gemeinsamen Namen. Du sprichst sie über unterschiedliche Indexe an. Der Index ist die Nummer des Platzes. Statt Array sagt man auch Feld.
Eine Grenze gibt es: Die Länge eines Arrays ist festgelegt. Wenn die Größe zunächst unbekannt ist oder sich ändern kann, sind Arrays keine gute Lösung.
Definition
Array
Ein Array ist in Java eine Sammlung von Daten des gleichen Typs. Die Elemente sind durchnummeriert und werden über einen Index angesprochen.
Beispiel: Vier Punktzahlen (ausgedachtes Beispiel)
- 1Mit Einzelvariablen: punkte1, punkte2, punkte3, punkte4 – vier verschiedene Namen
- 2Als Array: punkte ist ein Name für vier Plätze
- 3Die Plätze sprichst du so an: punkte[0], punkte[1], punkte[2], punkte[3]
- 4Ein gemeinsamer Name, unterschiedliche Indexe
Teste dich
Jeder Platz im Array hat eine Nummer, den Index. In Java beginnt die Zählung bei 0. Das erste Element hat also den Index 0. Willst du den 5. Wert ansprechen, brauchst du den Index 4: der gewünschte Platz minus 1. Andere Sprachen zählen teils anders: In Fortran beginnt der Index bei 1.
Die Länge eines Arrays steht in der Variablen length. Du fragst sie ab, indem du an den Namen des Arrays einen Punkt und length hängst, zum Beispiel array.length. Hat ein Array zehn Plätze, ist length gleich 10. Gültig sind dann die Indizes 0 bis 9, also 0 bis length − 1. Eine Schleife über das ganze Array läuft deshalb nur bis zur Länge minus 1.
Java prüft bei jedem Zugriff, ob der Index gültig ist. Ist er kleiner als 0 oder zu groß, meldet Java einen Fehler namens ArrayIndexOutOfBoundsException. Das Programm bricht dann normalerweise ab. Du kannst vorher selbst prüfen: if (index >= 0 && index < value.length). Diese Bedingung lässt nur gültige Indexe durch. Weil dort „kleiner als length“ steht, ist ein Index gleich length nicht erlaubt.
Beispiel: Array mit zehn Plätzen (ausgedachtes Beispiel)
- 1array.length ist 10
- 2Gültige Indizes: 0, 1, 2 … bis 9
- 3Der 5. Wert hat den Index 4
- 4Index 10 ist zu groß, denn es gibt nur die Plätze 0 bis 9
Merke: Gültig sind die Indizes von 0 bis length − 1. Schon der Index length ist zu groß.
Teste dich
Anlegen: Ein Array deklarierst du fast wie eine normale Variable. Erst kommt der Datentyp, dann eckige Klammern, dann der Name, zum Beispiel int[] array. Das sagt nur, unter welchem Namen das Feld angesprochen wird. Den Platz musst du mit dem Schlüsselwort new anfordern: array = new int[10]; reserviert Platz für zehn Werte vom Typ int. Alternativ gibst du die Werte gleich an: int[] zahlen = { 17, 125, 100, 250 }; Bei Zahlen setzt Java neu angelegte Plätze automatisch auf 0.
Ändern: Mit Namen und Index setzt du einen Wert, zum Beispiel array[4] = 3; Das ändert den 5. Platz, denn der Index ist der Platz minus 1. Die Länge bleibt unveränderlich: Es können weder zusätzliche Werte aufgenommen noch Plätze freigegeben werden.
Lesen: Du schreibst Namen und Index, zum Beispiel array[i]. Mit einer Schleife liest du nacheinander alle Plätze. Die for-Schleife hat drei Teile: einen Start (int i = 0), einen Test (i < daten.length) und einen Schritt (i++). Solange der Test stimmt, wird der Inhalt der Schleife wiederholt.
Durchsuchen: Bei der linearen Suche gehst du das Array Element für Element durch, bis du das gesuchte gefunden hast. Das Java-Beispiel gibt die Position des Elements zurück. Ist das Element nicht im Array, gibt es -1 zurück.
Definition
Lineare Suche
Bei der linearen Suche prüfst du ein Element nach dem anderen, bis du das gesuchte findest. Sie gilt als das einfachste Suchverfahren.
Beispiel: Lineare Suche in Java (Ausschnitt mit daten und gesucht)
- 1for (int i = 0; i < daten.length; i++) {
- 2 if (daten[i] == gesucht) { return i; }
- 3}
- 4return -1;
Teste dich
Ein eindimensionales Array ist eine einfache Reihe von Plätzen. Du brauchst nur einen Index, um einen Platz zu finden.
In Java kann ein Array auch selbst wieder Arrays enthalten: ein Array von Arrays, also ein geschachteltes Array. Du erkennst es an mehreren Paaren eckiger Klammern. double[][] array2; ist ein zweidimensionales Array aus double-Werten (Zahlen wie 1.0 oder 2.0). double[][][] array3; ist dreidimensional. Für jede Dimension gibt es einen eigenen Index und eine eigene Länge.
Mit array2 = new double[5][4]; entsteht eine Tabelle mit fünf Zeilen und vier Spalten. Du kannst die Spaltenzahl auch weglassen: array2 = new double[5][]; reserviert Platz für fünf Arrays, die du später zuweist. Diese Unter-Arrays dürfen verschieden lang sein.
Achtung: Bei dieser Art musst du vor dem Zugriff sicherstellen, dass das Unter-Array wirklich existiert. Sonst steht dort null, und das führt zu einem Fehler mit Programmabbruch. Auch ein Zugriff hinter dem Ende eines Unter-Arrays bricht das Programm ab. Die Längen fragst du so ab: array2.length ist die Anzahl der Plätze für Unter-Arrays, array2[4].length die Anzahl der Werte im Unter-Array mit dem Index 4.
Definition
Geschachteltes Array
Ein geschachteltes Array enthält als Element wieder ein Array. Man nennt es auch verzweigtes Array. Es hat mehrere Dimensionen, jede mit eigenem Index.
| Art | Deklaration | Bedeutung |
|---|---|---|
| eindimensional | int[] array | eine Reihe von Plätzen |
| zweidimensional | double[][] array2 | Array aus Arrays |
| dreidimensional | double[][][] array3 | Array aus Arrays aus Arrays |
Teste dich
Alles auf einen Blick
Array
Array
Sammlung von Daten des gleichen Typs unter einem gemeinsamen Namen
Index
In Java hat das erste Element den Index 0
Gültig
Die Indizes 0 bis length − 1; sonst meldet Java einen Fehler, der das Programm normalerweise abbricht
Länge
Nach dem Anlegen bleibt sie unveränderlich
Durchsuchen
Eine Schleife geht Element für Element durch
Geschachtelt
Ein Array aus Arrays, mit einem eigenen Index für jede Dimension
Musteraufgabe · Schritt für Schritt
Fünf Zahlen: lesen, ändern, suchen (ausgedachtes Beispiel)
- 1int[] punkte = { 12, 7, 20, 9, 15 };
- 2Länge: punkte.length ist 5. Gültige Indizes: 0 bis 4.
- 3Lesen: punkte[2] ist 20, denn Index 2 ist der dritte Platz.
- 4Ändern: punkte[1] = 8; macht aus 7 die Zahl 8. Das Array ist jetzt 12, 8, 20, 9, 15.
- 5Suche nach 9: i = 0 → 12, i = 1 → 8, i = 2 → 20, i = 3 → 9. Treffer bei i = 3, Ergebnis 3.
- 6Suche nach 4: Kein Treffer bei i = 0 bis 4. Bei i = 5 stimmt i < 5 nicht mehr, die Schleife endet. Ergebnis -1.
Fehler finden
Prüfe die Aussagen zu einem Array mit sechs Plätzen In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Falsche Zählung: Weil die Zählung bei 0 beginnt, hat der sechste Platz den Index 5. Richtig: werte[5] ist der letzte Platz, und werte[6] ist schon zu groß.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Das erste Element eines Arrays in Java hat den Index . Bei einem Array mit 10 Plätzen ist der größte gültige Index . Nach dem Anlegen bleibt die Länge eines Arrays .
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback