# Länge von mehrdimensionalen Array



## Infinable (15. Nov 2014)

Hallo,
kurze Anfängerfrage(bin neu hier im Forum)
und zwar, habe ich für eine Aufgabe verschiedene Längen von Arrays kennengelernt.
Also ist mir z.B. klar, dass bei einem Array int a = new int [3] [6]; a.length 3 ergibt,
nimmt man jedoch a[0].length oder a[1].length, ist das Ergebnis 6, also die Länge des zweiten Arrays,
jedoch verstehe ich nicht so ganz, was die Zahl in der Klammer, also [0] oder [1] bedeutet und daher weiß ich auch nicht warum man größere Zahlen wie 8 nicht benutzen kann.
Wäre dankbar, für eine Antwort


----------



## njans (15. Nov 2014)

```
int[] a = new int [3] [6];
```

Das kann man verstehen, als eine Tabelle mit 3 Zeilen und 6 Spalten. Wenn du auf einen Eintrag in der Tabelle zugreifen willst, musst du den X und Y Index angeben.
a[0][0] steht dabei für den ersten Eintrag in der (erster Zeile, erste Spalte).
a[2][5] steht wiederum für den letzten Eintrag (letzte Zeile, letzte Spalte).


----------



## kaoZ (15. Nov 2014)

Das ist eigentlich ganz einfach 

z.B int[4][5] bedeutet nichts anderes als ein Array , welches ein weiteres Array beinhaltet, da Arrays 0-basiert sind, beginnt man also bei 0 zu zählen und nicht bei 1

Um dies zu verdeutlichen

int[4][5]

[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
[3,0][3,1][3,2][3,3][3,3]

Hier musst du dann darauf achten das der letze Index 3,3 ist und nicht wie bei der länge deklariert 4,5 ist . (0-basiert)

Dein Array hat also 2 Dimensionen hier musst du darauf achten das die erste Dimension immer in y richtung aufgeführt wird, die zweite dann in x richtung

sprich [row][column]

im obigen Beispiel also ein int Array mit der matrix[zeilen][spalten]

EDIT : Njans war schneller


----------



## Infinable (15. Nov 2014)

Danke für die Antworten, aber mir war eigentlich schon klar, wie ein Array aufgebaut ist, nur ist mir die Logik hinter der Länge nicht so ganz bewusst.
Wie z.B. im oberen Beispiel int a [2] [4] . Nimmt man einfach a.length, berechnet er die Länge des ersten Arrays (?) schreibt man jedoch a[0].length, nimmt er die Länge des zweiten, auch wenn man a[1].length nimmt. Nicht falsch verstehen, aber mir wird nur nicht das System klar, von welchem Array die Länge berechnet wird.


----------



## kaoZ (15. Nov 2014)

mit int[0].lenght(); wird die länge des Arrays ausgegeben welches sich an index int[0] befindet, also in der ersten Zeile

also Sinnbildlich: ([3][3] matrix)


```
public class Foo{

	public static void main(String[] args){
		
		
		int[][] arr = 
				
			{
				{1,2,3},
				{5,6,7},
				{8,9,0}
			};
		
		System.out.println(arr[0].length);		// 3
	}
}
```

vielleicht kannst du es so besser nachvollziehen.

hättest du jetzt ein Array welches unterschiedlich Inhalte hätte :


```
public class Foo{

	public static void main(String[] args){
		
		
		int[][] arr = 
				
			{
				{1,2,3,4},
				{5,6,7,8,9,10},
				{11,12,13,14}
			};
		
		System.out.println(arr[1].length);		// 6
	}
}
```


----------



## Infinable (15. Nov 2014)

Ach so,
danke sehr, wirklich sehr verständliche Antwort und schön dargestellt 
Jetzt verstehe ich auch, warum ich gelesen hatte, dass es bei Arrays, die nach int a =new int [][] also rechteckigen Arrays eigentlich sowieso das gleiche Ergebnis ausgegeben wird. Nun, wenn das so ist, ist es ja schon fast ein Trick mit a.length bei mehrdimensionalen Arrays, nicht die Länge eines Arrays, sondern die Anzahl der Arrays auszugeben, was ja das erste Array ist


----------

