Sie können eine Schleife schreiben, die die Elemente eines Arrays nacheinander abruft, wobei die Länge als Wiederholungsbedingung in der for-Anweisung verwendet wird.
Obwohl die erweiterte for-Anweisung denselben Prozess einfacher schreiben kann, konnte ich nicht verstehen, "warum die beiden Prozesse gleich sind".
Deshalb möchte ich dieses Mal in diesem Artikel vorstellen, warum die beiden Prozesse bei Verwendung eines mehrdimensionalen Arrays gleich sind und wie ich es verstanden habe.
Dieses Mal wird am Beispiel des folgenden dreidimensionalen Arrays jedes Element mit der Methode plintln ausgegeben.
int[][][] array = { { { 1, 2 }, { 3, 4 }, { 5, 6 } }, { { 7, 8 }, { 9, 10 }, { 11, 12 } } };
Schreiben wir zunächst mit der erweiterten for-Anweisung.
for (int[][] tmp1 : array) {
for (int[] tmp2 : tmp1) {
for (int tmp3 : tmp2) {
System.out.println(tmp3);
}
}
}
Eine Ganzzahl von 1 bis 12 wird an die Konsole ausgegeben.
Als nächstes schreiben Sie, wie Sie die Länge als Wiederholungsbedingung verwenden.
Wenn ich mit Länge schreibe, habe ich wie folgt geschrieben.
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
for (int k = 0; k < array[i][j].length; k++) {
System.out.println(array[i][j][k]);
}
}
}
Wenn Sie sich array [i] [j] [k]
ansehen, können Sie sehen, dass wir die Elemente des Arrays nacheinander extrahieren.
Als ich dies jedoch mit der erweiterten for-Aussage oben verglich, konnte ich nicht sofort verstehen, dass es dasselbe tat. Hier ist der Teil, den ich fühlte "Ich verstehe nicht".
Daher habe ich die Schreibmethode unter Verwendung der Länge wie folgt umgeschrieben.
for (int i = 0; i < array.length; i++) {
int[][] tmp1 = array[i];
for (int j = 0; j < tmp1.length; j++) {
int[] tmp2 = tmp1[j];
for (int k = 0; k < tmp2.length; k++) {
int tmp3 = tmp2[k];
System.out.println(tmp3);
}
}
}
Durch Schreiben von "int [] [] tmp1 = array [i];" ohne es wegzulassen, konnten wir es fast so machen wie die erweiterte for-Anweisung.
Wenn Sie sich nur die Schreibmethode mit Länge ansehen, ist es einfacher zu verstehen, was die Schreibmethode mit array [i] [j] [k]
tut, aber sie entspricht der erweiterten for-Anweisung. Ich denke, es wäre einfacher zu verstehen, wenn es ein Prozess wäre, wenn Sie ihn schreiben würden, ohne "int [] [] tmp1 = array [i];" wegzulassen.
Wenn Sie wie ich nicht ganz verstehen, "warum die beiden Prozesse gleich sind", hoffe ich, dass dieser Artikel Ihnen beim Verständnis hilft.
Recommended Posts