Zahlen eines zweidimensionalen Arrays berechnen?
Hallo Leute,
ich verstehe den angeführten Code nur teilweise und brauche eure Hilfe.
public class Main {
public static void sum(int[][] arr) {
int ergebnis = 0;
for (int[] a : arr) {
for (int b: a) {
ergebnis+=b;
}
}
System.out.println(sum);
}
public static void main(String[] args) {
int[][] a = {{4,2},{9,5,2},{1}};
sum(a);
}
}
Also einerseits verstehe ich nicht genau die Zahlen Zuweisung im Array (int[][] a = {{4,2}, {9,5,2}, {1}}) welches in main steht, müsste es nicht ({{4,2,1}, {9,5,2}}) sein damit es einem zweidimensionalem Array zugewiesen werden kann?
Und andererseits verstehe ich nicht die verschachtelte for-each Schleife, kann mir da jemand bitte genau schritt für schritt erklären was da passiert und wieso genau man das so machen muss?
2 Antworten

Also einerseits verstehe ich nicht genau die Zahlen Zuweisung im Array (int[][] a = {{4,2}, {9,5,2}, {1}}) welches in main steht, müsste es nicht ({{4,2,1}, {9,5,2}}) sein damit es einem zweidimensionalem Array zugewiesen werden kann?
Nein, auch {{4,2}, {9,5,2}, {1}} ist ein 2D-Array - das erste innere Array hat zwei Elemente, das zweite hat drei und das dritte nur eines. Die einzelnen "inneren" Arrays müssen nicht die gleiche Anzahl an Elementen haben.
Zweidimensional bedeutet hierbei nicht die Anzahl der Elemente, sondern die "Tiefe" der Schachtelung
Und andererseits verstehe ich nicht die verschachtelte for-each Schleife, kann mir da jemand bitte genau schritt für schritt erklären was da passiert und wieso genau man das so machen muss?
Du musst es nicht so machen, du kannst es
Was der Code in der Schleife macht:
- äußerer Schleifenkopf: er iteriert über das Array von Integer-Arrays "arr" und referenziert in jedem Durchlauf das momentane Integer-Array mit "a".
- äußerer Schleifenkörper, innerer Schleifenkopf: er iteriert über das Array "a", nimmt jeden Integer-Wert aus diesem, referenziert diese mit "b" und arbeitet damit im Schleifenkörper
- im Schleifenkörper der inneren Schleife wird "b" auf die aktuelle Summe addiert.


[
[4, 2],
[9, 5, 2],
[1],
];
Klappt doch wunderbar. Wo siehst du da ein Problem?

Wieso kann man die Zahlen so zuweisen, wäre es dann nicht ein dreidimensionales Array?

wäre es dann nicht ein dreidimensionales Array?
warum sollte es? Wo siehst du eine dritte Dimension?
Ja eh es klappt ja, aber ich selbst verstehe den Code nicht ganz