想要將2維數組(n * n矩陣)的對角線寫入一維數組。JAVA將2維數組的對角線寫入1維數組
1 2 3
4 5 6 => 1 5 9
7 8 9
public int[] getDiagonalFromArray(int[][] two_d_array){
int[] diagonal_array = new int[two_d_array[0].length];
int k=0;
for (int i = 0; i < two_d_array[0].length; i++) {
for (int j = 0; j < two_d_array[1].length; j++) {
for (int l = 0; l < two_d_array[0].length; l++) {
diagonal_array[k]=two_d_array[i][j];} //HERE SHOULD BE THE ERROR... HOW DO I CYCLE THROUGH THE 1dim "diagonal_array"?
}
}
return diagonal_array;
}
這種方法提供了錯誤的價值觀。
這種挖礦方法,只是打印diagonale,而不是放入1dim數組中。
public void getDiagonal(int[][] two_d_array){
//int[] diagonal_array = new int[two_d_array[0].length];
for (int i = 0; i < two_d_array[0].length; i++) {
for (int j = 0; j < two_d_array[1].length; j++) {
if (i==j) System.out.print(two_d_array[i][j]+" ");
}
}
}
邏輯差異在哪裏?我嘗試了第一種方法的if子句,但它引發了「outofbound」-Exception。
在此先感謝。
1維 - > 1循環。不確定其他兩個循環是什麼。 – tkausl
第一個循環不應該循環到'two_d_array [0] .length',而應該是'two_d_array.length'。不知道你爲什麼有三個循環?我建議只使用下面提出的解決方案之一。 – 2016-12-14 14:11:57