0
任務是將2維數組轉換爲簡單數組,然後嘗試通過for循環將原始數組的元素複製到新數組中數組索引出現在for循環中,每次有2個元素
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);
}
的另一方面,如果我修改數組複製這樣的代碼:
for(int i=0,k=0;i<a.length;++i){
System.arraycopy(a[i], 0, arr, k, a[i].length);
k+=a[i].length;
}
它運行良好,我不知道這兩個代碼之間有什麼區別,以及如何編寫每次更新2個元素的for循環。 任何意見是感謝,謝謝。
閱讀錯誤。你試圖訪問索引5的行。你只有5行,所以索引只能到4. – Carcigenicate
你是對的,我只是忽略for循環的執行過程的順序,它似乎是增量我先被執行了,而k的增量只會導致異常。 – LancelotHolmes