Skip to main content

So kannst du Java Arrays mit for Schleife füllen und auslesen

Wir haben in einem anderen Beitrag bereits über Java Arrays gesprochen.

So ein Array speichert Zahlen, Texte oder Objekte in eine Art Liste.
Und dann kannst du ganz bequem über den Index das Array füllen und die bereits enthaltenen Werte abrufen.

Ganz bequem?
So, wie ich dich aus dem letzten Beitrag entlassen habe, war das überhaupt nicht bequem. 🙂

Schau dir einfach mal diesen Code dazu an.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[8]; // arrayEins mit Länge von 8
arrayEins[0] = 0; // erstes Element i = 0
arrayEins[1] = 21;// zweites Element i = 1
arrayEins[2] = 12;
arrayEins[3] = 83;
arrayEins[4] = 234;
arrayEins[5] = 15;
arrayEins[6] = 62;
arrayEins[7] = 72; //achte Element des Array i = 8
 
System.out.println(arrayEins[0]);
System.out.println(arrayEins[1]);
System.out.println(arrayEins[2]);
System.out.println(arrayEins[3]);
System.out.println(arrayEins[4]);
System.out.println(arrayEins[5]);
System.out.println(arrayEins[6]);
System.out.println(arrayEins[7]);
}
}

Und mit diesem Wissensstand habe ich dich zurückgelassen.
So aufwendig war es ein Array zu füllen und sich die Werte ausgeben zu lassen.

Du siehst das Array hat eine Länge von 8.
Dieses Array kann somit 8 Zahlen vom Datentyp Integer speichern.

Du siehst auch, wie viele Zeilen Code ich benötige, um dieses Array zu füllen.
Und genau die gleiche Anzahl benötige ich um die Zahlen aus dem Array zu lesen.

Das ist sch…. 🙂
Lass uns einen besseren Weg finden.

Du kannst Java Arrays mit einer for Schleife füllen.

Und so geht’s.

Die for Schleife besitzt einen Schleifenkopf.
Und dieser Kopf sieht normalerweise so aus:
for (int i = 0; i < endwert ; i++)

Die Schleife startet bei i=0.
Und wird solange durchlaufen bis i nicht mehr kleiner als ein bestimmter Endwert ist.
Und bei jedem Durchlauf wird dann i um eins erhöht.

Und ein Array?
Ein Java Array hat ebenfalls einen Index i.
Dieser gibt die Position des Elementes an.

Es liegt nahe, dass sich dies kombinieren lässt.
Und so würde der Code aussehen.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[8];
 
for (int i = 0; i < 8 ; i++){
arrayEins[i]=1; // Jedes Element im Java Array bekommt den Wert eins zugewiesen
}
 
System.out.println(arrayEins[0]); //Bildschirmausgaben
System.out.println(arrayEins[1]);
System.out.println(arrayEins[2]);
System.out.println(arrayEins[3]);
System.out.println(arrayEins[4]);
System.out.println(arrayEins[5]);
System.out.println(arrayEins[6]);
System.out.println(arrayEins[7]);
}
}

Die for-Schleife startet bei i=0;
Die Schleife wird solange durchlaufen, bis "i" nicht mehr kleiner als 8 ist.

Wieso acht?
Acht ist die Länge des Arrays.

Und bei jedem Durchlauf wird i um eins erhöht.

Im Schleifenrumpf wird dann das Array gefüllt.
Und zwar wird es an der Stelle i gefüllt.

Am besten ist……
Wir spielen die for Schleife einmal gedanklich für die ersten drei Elemente durch.

  • Die for Schleife startet bei i =0.
  • Jetzt wird geprüft, ob i kleiner als 8 ist.
    Jawohl ist es.
  • Dann springt das Programm in den Schleifenrumpf.
    Und hier wird für i=0 oder "arrayEins" beim Index Null der Wert 1 gesetzt.
  • Und dann wird i um eins erhöht.

Java Arrays For Schleife 1 Durchlauf

Und weiter geht’s.

  • I hat den Wert 1.
  • Die Schleife prüft: "Ist i kleiner als 8?"
    Jawohl und ab in den Schleifenrumpf.
  • Da i jetzt den Wert eins hat - bekommt jetzt das Element mit Index 1 den Wert von 1 zugewiesen.
  • Wie gehabt wird am Ende der Schleife, i um eins erhöht.

Java Arrays For Schleife 2 Durchlauf

"I" hat jetzt den Wert zwei und das Spiel beginnt von vorn.
Java Arrays For Schleife 3 Durchlauf

Das Ganze läuft solange bis i den Wert 7 hat.
Dann bricht die Schleife ab.
Somit wurden acht Elemente (0 bis 7) in das Array gesteckt.

Und natürlich kannst du mit der for Schleife auch die Werte aus den Arrays lesen.

Im Prinzip ist es die gleiche Struktur.
Es ändert sich nur eine Kleinigkeit im Schleifenrumpf.

Und zwar machst du jetzt keine Zuweisung mehr.
Du lässt dir den Wert über eine System.out.println()-Anweisung ausgeben.

Java Arrays For Schleife Lesen

Und dies wäre der Code dazu.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[8];
 
/*
 * For Schleife zum Füllen eines Java Array
 */
for (int i = 0; i < 8; i++) {
arrayEins[i] = 1; // Jedes Element erhält die Zahl eins.
}
 
/*
 * For Schleife zum Lesen eines Java Array
 */
for (int i = 0; i < 8; i++) {
System.out.println(arrayEins[i]); // Rückgabe der Werte
}
}
}

Sieht doch schon viel attraktiver aus, als zum Anfang des Beitrages, oder?

Eins fehlt noch….

Die Länge des Arrays wird zum Problem.

Stell dir vor.
Du möchtest jetzt nicht 8 Werte in das Array stecken, sondern 100.

Was bedeutet das?
Du musst die Deklarierung des Arrays ändern.
int[] arrayEins = new int[100];

Okay, kein Problem.
Aber was heißt das für die Schleifen?

Ich habe im Code einmal die Länge des Arrays geändert.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[100]; // Array mit Länge von 100
 
/*
 * For Schleife zum Füllen eines Java Array
 */
for (int i = 0; i < 8; i++) {
arrayEins[i] = 1; // Jedes Element erhält die Zahl eins.
}
 
/*
 * For Schleife zum Lesen eines Java Array
 */
for (int i = 0; i < 8; i++) {
System.out.println(arrayEins[i]); // Rückgabe der Werte
}
}
}

Probiere es jetzt aus.
Ändere, so wie ich, die Länge des Arrays und klicke auf "Run".

Wie viele Werte kommen zurück?
100 oder 8?

8 - Es sollten aber 100 sein.
Du musst also immer auch den Endwert der for-Schleife ändern.
Denn jetzt läuft die for-Schleife immer noch - nur 8-mal.
(int i = 0; i < 8 ; i++)

Also ändere die for-Schleife ebenfalls ab.
(int i = 0; i < 100 ; i++)

Ähhh- ich habe mich falsch ausgedrückt.
Du musst nicht nur die eine for Schleife abändern.
Du musst beide For Schleifen abändern.
Und das wird jetzt zum Problem.

Wieso?
Das hat nichts mit Faulheit zu tun.
Der Code ist einfach fehleranfällig.

Denn jedes Mal, wenn du die Länge des Array änderst - Musst du auch die for-Schleifen ändern, welche das Array lesen oder füllen.
Und somit musst du das jedes Mal bedenken.

Und noch viel schlimmer.
Du musst wissen, welchen Code du ändern musst.

Vielleicht greifen Java Methoden auf das Array zu.
Vielleicht werden Werte aus dem Array in andere Methoden übergeben.

Du siehst, wenn dein Code etwas komplexer ist, dann wird das wirklich zum Problem.

Also was machst du?

Für jedes Array bietet Java eine bestimmte Variable an.

Und diese Variable speichert die Länge des Arrays.

Wie greifst du auf diese Variable zu?
Per Punktnotation - Wie beim Objekt.

  1. Du schreibst den Namen der Referenzvariablen "arrayEins".
  2. Setzt den Punkt.
  3. Und dann die Variable "length".

Und diese Variable gibt dir immer die Länge des entsprechenden Arrays zurück.

Probier diesen Code einmal aus:


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[100]; //Array mit Länge 100
int[] arrayZwei = new int [8]; // Array mit Länge 8
 
System.out.println(arrayEins.length); //Ausgabe 100
System.out.println(arrayZwei.length); //Ausgabe 8        
}
}

Und zwar erscheint jetzt die Länge 8 und 100.
Genauso, wie lang diese Arrays nun mal sind.

Und was bringt es, wenn Java das weiß?
Du kannst jetzt diese Variable für die Anzahl der Schleifendurchläufe nutzen.
Und dann kannst du die Länge des Arrays ändern und die Schleifendurchläufe ändern sich automatisch mit.

Ist doch eine tolle Sache, oder?
Lass uns das einbauen.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[100]; //Array mit Länge 100
 
for (int i = 0; i< arrayEins.length; i++){
arrayEins[i]=1;
} 
 
for (int i = 0; i<arrayEins.length;i++){
System.out.println(arrayEins[i]);
} 
}
}

Klicke auf "RUN" und jetzt sollte 100-mal eine Eins erscheinen.
Jetzt werden genauso viele Schleifendurchläufe produziert, wie das Array Elemente entgegen nehmen kann.

Probiere es aus.
Und ändere die Länge des Array von 100 auf 8 oder auf 6.

Nicht schlecht, oder?

Das Ganze ist noch nicht sehr spektakulär.
Mit einem Array, welches 100-mal eine 1 speichert, hol ich dich wahrscheinlich nicht von den Socken. 🙂

Und deshalb sind hier noch einige Beispiele wie du Java Arrays mit for Schleife nutzen kannst.

Ganz wichtig, ist die Tatsache, dass alle Werte gespeichert werden.
Und jeder Wert im gespeicherten Array kann in Methoden genutzt und abgerufen werden.

Also hier das erste Beispiel:
Die Zahlen 1 bis 100.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[101];
 
for (int i = 0; i < arrayEins.length; i++) {
arrayEins[i] = i; // i wird jedes Mal erhöht und gespeichert
}
 
for (int i = 0; i < arrayEins.length; i++) {
System.out.println(arrayEins[i]);
}
}
}

Noch ein Beispiel.
Die Viererreihe soll im Array gespeichert werden.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[101];

int viererZahl=0; // lokale Variable soll gespeichert werden
for (int i = 0; i < arrayEins.length; i++, viererZahl=viererZahl+4) {
arrayEins[i] = viererZahl;
}
 
for (int i = 0; i < arrayEins.length; i++) {
System.out.println(arrayEins[i]);
}
}
}

Und das letzte Beispiel.
Ein Java Array, welches Zufallszahlen zwischen 0 und 100 speichert.


public class ArrayForSchleife {
 
public static void main(String[] args) {
int[] arrayEins = new int[101];
 
 
for (int i = 0; i < arrayEins.length; i++) {
arrayEins[i] = (int)(Math.random()*100);
}
 
for (int i = 0; i < arrayEins.length; i++) {
System.out.println(arrayEins[i]);
}
}
}

Zusammenfassung:

  • Mit einer for-Schleife kannst du deine Java Arrays mit Werten füllen.
  • Und du kannst mit einer anderen For-Schleife dir die Werte wieder zurückgeben lassen.
  • Dabei dient der Schleifenzähler i gleichzeitig als Index des Arrays.
  • Um die Länge des Array dynamisch zu halten, nutzt du die Variable length.

Ähnliche Beiträge

3 Möglichkeiten um Vererbung von Java Klassen zu verhindern, zu verbieten oder ausschließen

Java Vererbung verhindern

Die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können Kinder zu kleinen Tyrannen werden. Sie bedienen […]

So verwendest du Inkrement und Dekrement Operatoren in deinen Java Programmen

Java Operatoren

In diesem Beitrag geht es um Java Operatoren. Ich möchte dir gern zwei neue Operatoren vorstellen. Diese nennen sich Inkrement und Dekrement. Ja was heißt das? Inkrementieren bedeutet eine schrittweise Erhöhung einer Zahl. Und dementsprechend bedeutet Dekrementieren: Die schrittweise Verminderung einer Zahl. Wozu brauchst du das? Stell dir vor. Du bekommst eine Liste mit Namen […]

Java Konsolenausgaben mit formatierten Zahlen

Java Konsolenausgaben Zahlen

Java Konsolenausgaben erzeugst du mit der System.out.println()-Anweisung. Dies ist relativ einfach. Aber es ist mitunter nicht ganz praktisch. Und zwar immer dann, wenn Zahlen im Spiel sind. Die Zahlen welche dann auf deiner Java Konsole erscheinen, sind unformatiert. Sie haben zu viele Kommastellen. Oder für eine bessere Darstellung benötigst du den Tausenderpunkt. Vielleicht möchtest du […]

Ohne Abstraktion ergibt Java Polymorphie wenig Sinn

Java Polymorphie Abstraktionsprinzip

Kennst du den Film Matrix? Denn kennst du vielleicht auch die Botschaft, welche der Protagonist am Anfang des Filmes erhält. „Folge dem weißen Kaninchen.“ Und so ähnlich ist es jetzt auch in diesem Beitrag. „Wir dringen immer tiefer in den Kaninchenbau ein.“ 🙂 Ganz so wie im Film wird es nicht. Aber bevor wir mit […]

So implementierst du Instanzmethoden in deine Java Klasse

Java Instanzmethoden

In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich dir zeigen, wie du Java […]

Den Java Vererbungsbaum nach dem Ist-Es-Prinzip richtig entwerfen

Java Vererbungsbaum

Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du eine Unterklasse, welche die Oberklasse […]

Die drei Bestandteile aller Java Klassen

Java Klassen Bestandteile

Java ist eine objektorientierte Programmiersprache. Was heißt das? Ja… Anscheinend hat es etwas mit Objekten zu tun. Also was ist ein Objekt? Ein Objekt ist ein bestimmtes Konstrukt im Programm. Bauen wir ein Spiel. Ein Grafik-Adventure. Du kennst das. Ein Held wird in eine bestimmte Spielwelt hinein gesteckt. Der Held muss mit bestimmten Personen sprechen. […]

Der wichtige Unterschied zwischen Java Methoden

Java Methoden Unterschied

Jetzt machen wir Nägel mit Köpfen. Dieses Sprichwort stammt aus den Anfängen des Industriezeitalters. Denn früher wurden Nägel nicht industriell, sondern per Hand gefertigt. Und da kam es schon einmal vor, dass versehentlich Nägel ohne Kopf produziert wurden. Was blieb ist das Sprichwort „Nägel mit Köpfen“ Und dieses steht sinngemäß für eine schnelle, qualitativ hochwertige […]