JAVA将二维数组的对角线写入一维数组
要将二维数组(n*n矩阵)的对角线写入一维数组
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;
}
此方法提供了错误的值
我的这种方法可行,但只是打印对角线,而不是将其放入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”异常
提前谢谢
# 1 楼答案
如果矩阵具有相同的宽度和高度,则这是一种解决方案:
# 2 楼答案
为什么需要不止一个循环
对我来说似乎足够了
# 3 楼答案
这里,我认为主对角线元素是元素集合{img1}$,其中^ {CD1>}和
m
是行数和列数(每行?)分别因此,对角线元素的数量永远不会大于
min(numOfRows, numOfColumns)
因此,您可以随时尝试:
为了更好的测量,我们进行了一些边界检查
您的输入矩阵必须至少为矩形(正方形最有意义),否则,代码的行为将不可靠
这与{a1}相同,但为了理解,我牺牲了性能和简洁性