Skip to main content

So kannst du zweidimensionale Java Arrays anlegen und nutzen

Eines der bedeutendsten Instrumente in der Mathematik ist das Koordinatensystem.

Die gedankliche Grundlage dieses Werkzeuges lieferte der französische Naturwissenschaftler und Philosoph Rene Descartes.

Man muss sich einmal verdeutlichen, was dies für die damalige Zeit bedeutete.
Bisher wurden mathematische Probleme lediglich durch Berechnungen gelöst.

Denke an geometrische Figuren, wie Dreiecke und Vierecke.
Der Umfang wurde lediglich berechnet.
Klar konnte man es auch auf Papier zeichnen.

Dennoch…
Ab diesem Zeitpunkt war es möglich eine geometrische Figur zu zeichnen.
Und das in einem einheitlichen System, welches jedem Beobachter ermöglichte, die Sachverhalte auf einen Blick zu erfassen.

Das Koordinatensystem verbindet somit die Algebra mit der Geometrie.

Es sorgt dafür, dass die Mathematik ein Instrument zur Visualisierung erhielt.
Somit können komplexe Probleme auf einer anschaulichen Ebene übertragen und gelöst werden.

Und auch in unserem Alltagsleben findest du Koordinatensysteme.

  • Denke an Schachbretter
  • Oder Landkarten mit Längen- und Breitengraden
  • Oder an GPS Systeme, welche diese Koordinaten speichern, verwerten und ausgeben.
  • Aber auch in Tabellen mit Spalten und Zeilen ist die Grundidee ein Koordinatensystem.

Warum erzähle ich dir das?
Ja, es geht um Java Programmierung in diesem Artikel.
Und es geht speziell um Java Arrays.
Und zwar um zweidimensionale oder mehrdimensionale Arrays.

Was kannst du von diesem Beitrag erwarten?

  • Zuerst möchte ich dir zeigen, was du dir unter einem zwei- oder mehrdimensionalen Array vorstellen kannst.
    Es geht um das Konzept, wie deine Daten in so einem Array aufbewahrt werden.
  • Dann zeige ich dir, wie du so ein mehrdimensionales Array anlegen kannst.
    Und worauf dabei zu achten ist.
  • Und dann werde ich dir zeigen, wie du es füllst und aus einem gefüllten Array Daten lesen kannst.

Wie kannst du dir zweidimensionale Java Arrays vorstellen.

Ein normales Array hat x-beliebig viele Fächer.
Und in diesen Fächern kann es Daten eines bestimmten Datentypen speichern.

Wenn ich einmal ein Integer-Array anlege:
int [] arrayEins = new int [] {2,3,4};
Dann hat dieses Array 3 Fächer.

Java Arrays eindimensional

Du hast aber die Möglichkeit in jedem Fach des Arrays, wiederum ein Array anzulegen.
Und dieses kann wieder x-beliebig viele Fächer haben.
Java Arrays zweidimensional drei Fächer

In diesem Moment ist dieses Array zweidimensional.
Jedes Fach beinhaltet wieder ein Array.
Insgesamt besitzt dieses zweidimensionale Array 9 Fächer.

Solche zweidimensionale Java Arrays kannst du dir als Tabelle vorstellen.

Jede Tabelle besitzt Zeilen und Spalten.

Ein normales bzw. eindimensionales Array besitzt nur eine Spalte.
Und hier kann es so viele Werte eines bestimmten Datentypen speichern, wie die Länge es zulässt.
In unserem Beispiel hat das eindimensionale Array die Länge drei und die Werte 2, 3 und vier.

Als Tabelle würde dies so aussehen.

Java Array als Tabelle

Du siehst:
Die Tabelle oder das Array besitzt eine Spalte und drei Zeilen.
Man kann es auch so sagen: „Das Array besitzt drei Zeilen und jede Zeile besitzt nur eine Spalte.“

Und wenn du jetzt in den Fächern ein weiteres Java Array anlegst.
Dann hätte jede Zeile mehrere Spalten.

Java Arrays zweidimensional Spalten und Zeilen

Eine Tabelle mit drei Zeilen und drei Spalten wäre dann ein Array, welche 9 Integerwerte speichert.
Java-Tabelle-anlegen

Alles klar?
Dann lass uns ein solches zweidimensionales Java Array einmal anlegen.

So kannst du zweidimensionale Java Arrays anlegen.

Ein normales eindimensionales Array hast du bisher so angelegt:
int [] eindimArray = new int [] {2,3,4};
Oder so:


int [] eindimArray = new int [3];
		eindimArray [0]=2;
		eindimArray [1]=3;
		eindimArray [2]=4;

Es ist eigentlich ganz einfach.
Wenn du mehr Dimensionen brauchst, setze mehr eckige Klammern.
Und zwar auf beiden Seiten:

  • Bei der Variable (int [] eindimArray)
  • Und beim Array (new int[])

int [] [] zweidimArray = new int [3] [2];
In diesem Falle hast du dann ein zweidimensionales Array mit 3 Fächern.
Und alle drei Fächer haben wiederum ein Array mit zwei Fächern.

Das bedeutet, du hast jetzt 3 mal 2 Fächer.
Also ein zweidimensionales Array, welches 6 Werte speichern könnte.

Jetzt lass es uns auch endlich füllen. 🙂

So kannst du zweidimensionale Java Arrays füllen.

Ich bleibe bei der Tabelle.
Und ich habe eine zweite Spalte/ Array hinzugefügt.

Java-Tabelle-2-Spalten

Im Fach 0 0 befindet sich die Zahl 2.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//multidimensionales Array mit 3 Zeilen und 2 Spalten
		zweidimArray[0][0]=2; //Koordinaten 0 0
	}
}

Das nächste Fach im Array könnte das Fach mit den Koordinaten 0 und 1 sein.

Koordinate-0-1

Hier wird der Wert 7 gespeichert.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//3 Zeilen und 2 Spalten
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
	}
}

Dann geht es in die nächste Zeile, also in das nächste „erste Fach“.

Koordinate-1-0

Dieses beinhaltet den Wert 3.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//3 Zeilen und 2 Spalten
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
	}
}

Und das Fach 1-1 speichert den Wert 12.

Koordinate-1-1


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//3 Zeilen und 2 Spalten
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
		zweidimArray[1][1]=12; //Koordinaten 1 1
	}
}

Die letzte Zeile speichert die Werte 4 und 8.

Und so würde der Java Code mit allen Fächern dieses Java Arrays aussehen:


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//3 Zeilen und 2 Spalten
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
		zweidimArray[1][1]=12; //Koordinaten 1 1
		zweidimArray[2][0]=4; //Koordinaten 2 0
		zweidimArray[2][1]=8; //Koordinaten 2 1
	}
}

Um die Werte dann wieder aus dem Array zu lesen, kannst du die Koordinaten in eine System.out.println()-Anweisung einbinden und dir zurück geben lassen.

Dabei gehst du genauso vor, wie bei der Füllung der einzelnen Fächer.
Du gibst die Koordinaten an und platzierst diese innerhalb der System.out.println()-Anweisung.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [2];//3 Zeilen und 2 Spalten
		
		//Array mit Werten füllen
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
		zweidimArray[1][1]=12; //Koordinaten 1 1
		zweidimArray[2][0]=4; //Koordinaten 2 0
		zweidimArray[2][1]=8; //Koordinaten 2 1
		
		//Werte aus dem Array lesen
		System.out.println(zweidimArray[0][0]);//Rückgabe 2
		System.out.println(zweidimArray[0][1]);//Rückgabe 7
		System.out.println(zweidimArray[1][0]);//Rückgabe 3
		System.out.println(zweidimArray[1][1]);//Rückgabe 12
		System.out.println(zweidimArray[2][0]);//Rückgabe 4
		System.out.println(zweidimArray[2][1]);//Rückgabe 8
	}
}

Aber da geht noch mehr.

Denn du kannst die zweite Dimension mit einer dynamischen Größe belegen.

Und so geht’s.
Beim Anlegen des Arrays kannst du die Größe der zweiten Dimension oder Spalte erst einmal offen lassen.
int [] [] zweidimArray = new int [3] [];
Dann hast du ein zweidimensionales Array mit drei Fächern.
In jedem dieser drei Fächer steckt ein anderes Array, dessen Länge noch unklar ist.
Und dann kannst du beliebige neue Arrays in den einzelnen Fächern anlegen.


	int [] [] zweidimArray = new int [3] [];//3 Zeilen und x- Spalten
		zweidimArray[0]= new int[2]; //Im Fach 0 wurde ein Array für zwei Integer-Werte angelegt
		zweidimArray[1]= new int[2]; //Fach 1 mit Array für zwei Werte
		zweidimArray[2]= new int[2];//Dritte Zeile mit zwei Fächern

Der Rest – also das Füllen und Abrufen der einzelnen Werte – würde im Code so bleiben.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [];//3 Zeilen und x- Spalten
		zweidimArray[0]= new int[2]; //Im Fach 0 wurde ein Array für zwei Integer-Werte angelegt
		zweidimArray[1]= new int[2]; //Fach 1 mit Array für zwei Werte
		zweidimArray[2]= new int[2];//Dritte Zeile mit zwei Fächern
		
		//Array mit Werten füllen
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
		zweidimArray[1][1]=12; //Koordinaten 1 1
		zweidimArray[2][0]=4; //Koordinaten 2 0
		zweidimArray[2][1]=8; //Koordinaten 2 1
		
		//Werte aus dem Array lesen
		System.out.println(zweidimArray[0][0]);
		System.out.println(zweidimArray[0][1]);
		System.out.println(zweidimArray[1][0]);
		System.out.println(zweidimArray[1][1]);
		System.out.println(zweidimArray[2][0]);
		System.out.println(zweidimArray[2][1]);
	}
}

Also was bringt es?
Du kannst an den einzelnen Stellen Arrays mit verschiedener Länge anlegen.
Zum Beispiel könnte die Tabelle dann so aussehen:

Java-Tabelle-unterschiedliche-Spalten

Die erste Zeile hätte nach wie vor zwei Spalten.
zweidimArray[0]= new int[2];
Die zweite Zeile hätte aber drei Spalten.
zweidimArray[1]= new int[3];
Und die dritte Zeile sogar vier Spalten.
zweidimArray[2]= new int[4];

Der komplette Code zu dieser Tabelle würde dann so aussehen.
Die neuen Fächer und Werte habe ich für dich fett markiert.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [];//3 Zeilen und x- Spalten
		zweidimArray[0]= new int[2]; //Im Fach 0 wurde ein Array für zwei Integer-Werte angelegt
		zweidimArray[1]= new int[3]; //Fach 1 mit Array für drei Werte
		zweidimArray[2]= new int[4];//Dritte Zeile mit vier Fächern
		
		//Array mit Werten füllen
		zweidimArray[0][0]=2; //Koordinaten 0 0
		zweidimArray[0][1]=7; //Koordinaten 0 1
		zweidimArray[1][0]=3; //Koordinaten 1 0
		zweidimArray[1][1]=12; //Koordinaten 1 1
		zweidimArray[1][2]=2; //Koordinaten 1 2
		zweidimArray[2][0]=4; //Koordinaten 2 0
		zweidimArray[2][1]=8; //Koordinaten 2 1
		zweidimArray[2][2]=22; //Koordinaten 2 2
		zweidimArray[2][3]=3; //Koordinaten 2 3
		
		//Werte aus dem Array lesen
		System.out.println(zweidimArray[0][0]);
		System.out.println(zweidimArray[0][1]);
		System.out.println(zweidimArray[1][0]);
		System.out.println(zweidimArray[1][1]);
		System.out.println(zweidimArray[1][2]);//Rückgabe 2
		System.out.println(zweidimArray[2][0]);
		System.out.println(zweidimArray[2][1]);
		System.out.println(zweidimArray[2][2]);//Rückgabe 22
		System.out.println(zweidimArray[2][3]);//Rückgabe 3
	}
}

Du kannst die Größe des Arrays auch nachträglich ändern

Dafür musst du nur die Längenwerte überschreiben:


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [1];//3 Zeilen und 1 Spalte
		zweidimArray[0]= new int[2]; //Länge für Fach 0 wurde überschrieben
		zweidimArray[1]= new int[3]; //Länge für Fach 1 wurde überschrieben
		zweidimArray[2]= new int[4];//Länge für Fach 2 wurde überschrieben
	}
}

Du siehst:
Ursprünglich hatte das Array nur 1 Spalte.
Dann wurden für alle Zeilen bzw. Fächer neue Dimensionen festgelegt.

Dass dies auch funktioniert, siehst du hier.
Probiere diesen Code aus.


public class ArrayTest {
	
	public static void main(String[] args) {		
		int [] [] zweidimArray = new int [3] [1];//3 Zeilen und 1 Spalte
		zweidimArray[0]= new int[2]; //Länge für Fach 0 wurde überschrieben
		zweidimArray[1]= new int[3]; //Länge für Fach 1 wurde überschrieben
		zweidimArray[2]= new int[4];//Länge für Fach 2 wurde überschrieben
		
		//Array mit Werten füllen
		zweidimArray[0][0]=2;
		zweidimArray[0][1]=7;
		zweidimArray[1][0]=3;
		zweidimArray[1][1]=12;
		zweidimArray[1][2]=2;
		zweidimArray[2][0]=4; 
		zweidimArray[2][2]=22;
		zweidimArray[2][3]=3;
		
		//Werte aus dem Array lesen
		System.out.println(zweidimArray[0][0]);
		System.out.println(zweidimArray[0][1]);
		System.out.println(zweidimArray[1][0]);
		System.out.println(zweidimArray[1][1]);
		System.out.println(zweidimArray[1][2]);
		System.out.println(zweidimArray[2][0]);
		System.out.println(zweidimArray[2][1]);
		System.out.println(zweidimArray[2][2]);
		System.out.println(zweidimArray[2][3]);
	}
}

Und natürlich kannst du auch multidimensionale Arrays anlegen.

Und damit meine ich mehr als unsere bisherigen zwei Dimensionen.

Wenn du mehr Dimensionen willst, dann setze mehr Klammern.
Und das wiederum auf beiden Seiten.

  • int [] [] [] dreidimArray = new int [3] [2] [2]; drei Dimensionen mit 12 Fächern
  • int [] [] [] [] vierdimArray = new int [3] [2] [2] [7]; vier Dimensionen mit 84 Fächern

Schauen wir uns das dreidimensionale Array einmal an.
Dieses Array könntest du dir so vorstellen:
Dreidimensionales Array mit 3 Fächern und jeweils 2 Spalten und jeweils 2 Reihen in die Tiefe.

Java Arrays multidimensional

Ab der vierten Dimension ist es für uns nicht mehr visuell darstellbar.
Ab jetzt sind nur noch die Mathematiker mit Matrizen und Vektoren gefragt. 🙂

Den Zugriff auf die einzelnen Fächer organisierst du analog zu einem zweidimensionalen Array.


int [] [] [] dreiDimArray= new int [3][2][2]; 
		dreiDimArray[0][0][0]=2; //Das Fach 0-0-0 speichert den Wert 2

So habe ich noch etwas vergessen?

Ah ja.
Wie auch schon bei den eindimensionalen Arrays ist eine Mischung der Datentypen nicht möglich.

Das heißt:
Du kannst in einem Integer-Array, in allen Dimensionen, nur ganze Zahlen speichern.
In einem String Array ist nur Platz für Textwerte. Und auch das erstreckt sich über alle Dimensionen.
Und so weiter… 🙂

Zusammenfassung:

  • Java Arrays können nicht nur eindimensional sein.
    Du kannst in Java auch mehr- oder multidimensionale Arrays anlegen.
  • In diesen kannst du dann ganz normal Werte speichern und die Werte wieder abrufen.
    Du gibst die Indizes (Koordinaten) zum Array an und kannst dort Werte speichern und abrufen.
  • Wie auch schon bei den normalen Arrays ist hier keine Mischung der Datentypen möglich.

Ähnliche Beiträge

So verwendest du die Java Codeblöcke zur Automatisierung

Java Codeblöcke

In diesem Beitrag geht es um den Einsatz von Java Codeblöcken oder Initialisierungsblöcken. Viele Wege führen nach Rom. Oder Alle Wege führen nach Rom. Heißt es in einem alten Sprichwort. Und so ähnlich ist es bei der Java Programmierung. In diesem Beitrag möchte ich dir einen weiteren Weg vorstellen, wie du Variablen eines Java Objektes […]

So kannst du Eclipse installieren

Eclipse installieren

Das Schöne an Eclipse ist, es läuft auf sämtlichen Betriebssystemen. Eclipse wird einfach auf der Webseite des Herstellers herunter geladen und kann dann installiert werden. Dabei stehen dir verschiedene Versionen zur Verfügung.

So kannst du ein neues Java Projekt mit Eclipse anlegen und konfigurieren

Java Projekt anlegen Eclipse

In diesem Beitrag möchte ich dir zeigen, wie du ein neues Java Projekt mit Eclipse anlegen kannst. Ich werde dir außerdem einen kurzen Überblick über die Konfigurationsmöglichkeiten geben. Dann gebe ich dir noch eine ganz einfache Schritt-für-Schritt-Anleitung für dein allererstes Java Projekt und ich zeige dir, was nach dem Anlegen des Projektes eigentlich passiert ist.

Das Java Leben ist einfacher mit For-Schleife

Java For Schleife Aufbau

In einem anderen Artikeln habe ich bereits über Schleifen in Java gesprochen. In diesem Artikel möchte ich dir eine ganz besondere Schleife vorstellen. Warum ist diese so toll? Sie hat einen integrierten Schleifenzähler. Die Schleife zählt also bei jedem Durchlauf automatisch mit. Aber dazu gleich mehr…. Lass uns einmal so eine For Schleife anlegen.

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Java Übung 16 – Bestimme den größten gemeinsamen Teiler

Java Übung Teiler

In dieser Java Übung möchte ich, dass du den größten gemeinsamen Teiler zwei Zahlen ermittelst. Ich möchte, dass du das Ganze mit einer while-Schleife umsetzt. Und wie? Du legst eine neue Klasse „GGT“ (größter gemeinsamer Teiler) an. In diese Klasse implementierst du eine Klassenmethode „berechneGGT“. Diese erwartet zwei Argumente vom Datentyp Integer.

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

Java Duales Zahlensystem – Binäre Zahlen in Java umwandeln

Java Dual System

Das duale Zahlensystem hat viele Bezeichnungen. Oft wird auch es Dualsystem oder Binärsystem genannt. Es besteht aber immer aus 2 Zahlen. Man verwendet oft die Zahlen 0 und 1. Es können aber auch sämtliche anderen Zahlenpaare sein. Zum Beispiel 7 und 175 sind für sich genommen, auch ein normales Zahlenpaar und somit ein Dualsystem. Mit […]

Die sechs Bestandteile von Java Methoden

Java Methoden Bestandteile

Java Methoden hauchen deinem Java Programm Leben ein. Ohne eine Methode würde deine Java Klasse ein starres Konstrukt sein. Deine Objekte hätten Eigenschaften. Aber sie könnten nichts machen. Und das wäre eine trostlose Welt. Java Methoden sorgen also dafür, dass Objekte interagieren. Methoden bestehen aus bestimmten Bausteinen. Und diese Bausteine bestimmen, was die Methode darf […]

So kannst du mit dem StringTokenizer Java Strings zerlegen oder splitten

Java StringTokenizer Java Strings teilen zerlegen splitten

Java StringTokenizer – was ist das? Bevor ich diese Frage kläre, schiebe ich eine zweite Frage hinterher. Denn im Wort Tokenizer steckt das Wort Token. Also was ist ein Token? Hier die Definition zum Token: Ein Token ist eine bestimmte Aneinanderreihung von Zeichen. Man kann auch sagen, eine lexikalische Einheit. Das kann zum Beispiel eine […]