# 2-dimensionales Array initialisieren



## Max (6. Apr 2004)

Hallo Forum,
Bin nicht sicher, ob ich das richtig mache, wahrscheinlich nicht, denn ich bekomme immer ein ArrayIndexOutOfBoundsException.


Mein Code sieht wie folgt aus:


```
class data
{int a,b,c;};



dataarray=new data[12][];
//array mit 12 feldern in der ersten dimension, die zweite will ich später im Programm flexibel erstellen 
// das sollte möglich sein, wenn ich Beni richtig verstanden habe
```

weiter habe ich mir das so gedacht:





```
for(int i=0;i<12;i++)
for (int j=0;j<flexibleZahl,j++)
{

dataarray[i][j]=new data;
}
```

Kann mir jemand weiterhelfen, das habe ich nirgendwo gefunden und langsam nervt's mich. :x 

Danke für jede Hilfe und
Grüsse
Max


----------



## Beni (6. Apr 2004)

@Max
Diesen Code hast du wohl nicht im Programm, oder du hast einen sehr toleranten Compiler  :wink: 

Vielleicht hilft dir schon ein Codebsp (und das Ganze war nur ein Denkfehler...).
Ansonsten solltest du mal den ganzen Code, inkl. Fehlermeldung posten.

mfg Beni



```
Data[] array = new Data[12][];

for( int i = 0, n = array.length; i < n; i++){
  int flexibel = (int)(Math.random() * 100);

  array[i] = new Data[ flexibel ];

  for( int j = 0; j < flexibel; j++ )
    array[i][j] = new Data( "blabla" );
}
```


----------



## Max (6. Apr 2004)

Beni hat gesagt.:
			
		

> @Max
> Diesen Code hast du wohl nicht im Programm, oder du hast einen sehr toleranten Compiler  :wink:
> 
> Vielleicht hilft dir schon ein Codebsp (und das Ganze war nur ein Denkfehler...).
> ...



Hi Beni,
so hab ich den code wirklich nicht im Programm, habe wohl daneben getippt (in Doppeltem Sinne)

Muss leider nochmal penetrant nachfragen zu deinem Beispiel:


```
Data[] array = new Data[12][];

for( int i = 0, n = array.length; i < n; i++){
  int flexibel = (int)(Math.random() * 100);

  array[i] = new Data[ flexibel ];
// Warum musss ich hier nochmal new Data anwenden, ich dachte das schon
 //mit Data array=new Data[12][] für die erste Dimension gemacht?;

  for( int j = 0; j < flexibel; j++ )
    array[i][j] = new Data( "blabla" );
//Steht "blabla hier für eine Zahl, sprich für die Grösse des Arrays in der 2ten Dimension??"
}
```

Nochmals Tschuldigung für eventuelle Begriffsstutzigkeit, aber ich versteh's grad wirklich nicht.
Danke für Deine Geduld und geschätzte Hilfe

Viele Grüsse
Max


----------



## Reality (6. Apr 2004)

Boah wie du abgehst Beni! :shock: 

@Max: Ich denke ich kann es dir einfacher erklären.
Du schreibst, dass du 12 Arrays haben willst, zählst aber von 0-12, was aber 13 sind.  Damit hast du die Grenze überschritten (ArrayOutOfBounds). Also zähle mal von 0-11.

Liebe Grüße
Reality


----------



## stev.glasow (6. Apr 2004)

> // Warum musss ich hier nochmal new Data anwenden, ich dachte das schon
> //mit Data array=new Data[12][] für die erste Dimension gemacht?;


du sagst es, "für die erste" und das ist jetzt für die zweite.



> //Steht "blabla hier für eine Zahl, sprich für die Grösse des Arrays in der 2ten Dimension??"



nein. das wurde schon mit array_ = new Data[ flexibel ];  gemacht.

Hier wird der Array bereits mit Daten (Data-Objekten) gefüllt._


----------



## Max (6. Apr 2004)

stevg hat gesagt.:
			
		

> > // Warum musss ich hier nochmal new Data anwenden, ich dachte das schon
> > //mit Data array=new Data[12][] für die erste Dimension gemacht?;
> 
> 
> ...


_

Ich glaub ich hab's gepeilt, Vielen Dank Euch _


----------

