die Mission ist es, ein 2-dimensionales Array in ein einfaches Array zu konvertieren und ich versuche, das Element des ursprünglichen Array zum neuen Array zum Beispiel für for-Schleife zu kopierenArray-Index außerhalb der Grenzen in for-Schleife mit 2 Elementen jedes Mal
public static void main(String[] args) {
int[][] a = new int[5][8];
//initialize the 2-dimensional array with random number range(1~100)
assignNestedArray(a);
printNestedArray(a);
int[] arr=new int[a.length*a[0].length];
for(int i=0,k=0;i<a.length;++i,k+=a[i].length){
System.arraycopy(a[i], 0, arr, k, a[i].length);
}
System.out.println(Arrays.toString(arr));
}
public static void printNestedArray(int[][] a){
for (int[] sub_arr : a) {
for (int v : sub_arr)
System.out.print(v+" ");
System.out.println();
}
}
public static void assignNestedArray(int[][] a){
for (int i = 0; i < a.length; ++i)
for (int j = 0; j < a[i].length; ++j)
a[i][j] = (int) (Math.random() * 100);
}
, die außerhalb der Grenzen Ausnahme
auf der anderen Seite einen Array-Index zeigt, wenn ich die Array Kopie Code wie folgt ändern:
for(int i=0,k=0;i<a.length;++i){
System.arraycopy(a[i], 0, arr, k, a[i].length);
k+=a[i].length;
}
Es funktioniert gut, ich frage mich, was ist der Unterschied zwischen diesen beiden Codes und wie man eine for-Schleife mit 2 Elementen jedes Mal zu aktualisieren. Jeder Rat ist zu schätzen, danke.
Lesen Sie den Fehler. Sie versuchen, auf die Zeile mit Index 5 zuzugreifen. Sie haben nur 5 Zeilen, also gehen die Indizes nur zu 4. – Carcigenicate
Sie haben Recht, ich ignoriere einfach die Reihenfolge des Ausführprozesses der for-Schleife, es scheint das Inkrement von mir wurde zuerst ausgeführt und das Inkrement von k verursacht nur die Ausnahme. – LancelotHolmes