Deklaration eines Arrays

Status
Nicht offen für weitere Antworten.

Angelika_25

Bekanntes Mitglied
Hallo, ich hätte noch eine Aufgabe....

Gegeben Sei die nachfolgende Deklaration bzw. Erzeugung eines Feldes:
int [][][]Feld=new int [6][10][7]
Ergänzen Sie deren (noch unvollständige) alternative Form:
Code:
int[][][]Feld=new int [6][][];
for (int d1=0; d1<________; d1++) {
Feld[d1]=new__________;
for (int d2=0; d2<________;d2++) {
Feld[d1][d2]=new________;
}
}


Meine Frage zu der Aufgabe wäre: Warum muss ich denn das ganze mit der For-Schleife überhaupt machen, ich habe doch oben schon die Deklaration mit new gemacht?
Vor allem, oben steht doch schon, wie groß alles sein soll und im unteren Code steht plötzlich nur noch die 6 im ersten Feld...


Würde mich über eine Hilfestellung sehr freuen 🙂
 
'Warum muss ich [..]'?
weil das eine Aufgabe ist, die dir etwas beibringen soll.. 😉

die Welt retten oder Geld verdienen wirst du damit nicht, genau wie mit all den Mathe-Aufgaben in der Schule
 
Code:
int[][][][][][][][]  array = ....
int dimension1 = array.length;
int dimension2 = array[0].length;
int dimension3 = array[0][0].length;
 
Wäre das so richtig?

Code:
int[][][]Feld=new int [6][][];
for (int d1=0; d1<6; d1++) {
Feld[d1]=new int [10];
for (int d2=0; d2<10;d2++) {
Feld[d1][d2]=new int[7];
}
}

Aber theoretisch würde doch die Deklaration int [][][] Feld=new int[6][10][7] reichen, oder? Oder muss man jedes einzelne Feld erzeugen?

Liebe Grüße
 
theoretisch würde es reichen

und hier ein wichtiger Tipp fürs Leben: nie Dinge unnötig wiederholen,
wenn du in Zeile 2 die 6 durch eine 4 ersetzt und das gleiche in Zeile 3 vergisst, dann gibts großen Ärger,
völlig unnötig, hier zweimal 6 zu schreiben, schreibe in Zeile 3 Feld.length, das ist automatisch auch richtig

und noch ein Tipp: Variablen klein schreiben!


edit:
> Feld[d1]=new int [10];

Feld[d1] muss doch ein zweidimensionales Array sein,
nicht ausprobiert?
 
Also könnte ich das so machen?
Code:
int[][][]Feld=new int [6][][];
for (int d1=0; d1<Feld.length; d1++) {
Feld[d1]=new int [10];
for (int d2=0; d2<Feld[d2].length;d2++) {
Feld[d1][d2]=new int[7];
}
}
 
> d2<Feld[d2].length
ist schlecht, d2 passt nicht als Index zu Dimension 1

außerdem:
SlaterB hat gesagt.:
> Feld[d1]=new int [10];

Feld[d1] muss doch ein zweidimensionales Array sein,
nicht ausprobiert?

ausprobieren!
 
achso, damit meinst du:
Code:
Feld[d1]=new int [10][7]
?

aber was mache ich dann mit dem Rest?
Sag mal ich glaub ich bin blöd!!
 
Ein Array hat eine Länge und eine oder mehrere Dimensionen

zb
Code:
int[] 1d = new int[10];
int length = 1d.length; //10

Ein eindimensionales Array. die erste Dimension hat die länge 10.

2d:
Code:
int 2d = new int[10][30];
int 1dLength = 2d.length; // länge der ersten Dimension: 10
int 2dLength = 2d[0].length; // länge der 2. Dimension: 30
int 2dLength1 = 2d[5].length; // länge der 2. Dimension: 30 (auch beim 6. Element)

Dies kann man schon als eine Tabelle anseheh..

3d:
das geht nun immer so weiter ;-)
 
Mein ganz allererster Code war der Code, der exakt so auf meinem Aufgabenblatt stand, so muss ich den ja beibehalten..
Es fehlen dort 4 Einträge, da wo ich die Unterstriche gemacht habe....

Was wäre dann da das geschickteste, was ich reinschreibe?
 
Sowas in der Art:
Code:
int[][][]Feld=new int [6][][]; 
for (int d1=0; d1<Feld.length; d1++) { 
Feld[d1]=new int[10][]; 
for (int d2=0; d2<Feld[d1].length;d2++) { 
Feld[d1][d2]=new int[7]; 
} 
}
Und dem Aufgabenzettelschreiber kannst Du auf die Finger hauen. Variablennamen schreibt man klein! Außerdem wären Einrückungen und mehr Leerzeichen der Lesbarkeit zuträglich.

Ebenius
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben