我目前停留在寻找2D数组对角线的最小值?例如,如果我有
2 1 3
4 5 6
9 8 7
我希望对角线分钟为2,5,7。 截至目前,我有一个嵌套的for循环打印0,老实说,我的代码下面是没用的,但也可以发布它。
double minD = 0;
for (int row = 0; row < a.length; row++) {
for (int col = 0; col < a[row].length; col++) {
minD = Math.min(minD, a[row][col]);
System.out.printf("%5.2f", minD);
如果有人能帮助我,我将不胜感激!
答案 0 :(得分:0)
minD
初始化的 0
是问题所在。由于0
小于您的任何值,因此无法输出正确的输出。
您的代码会检查所有矩阵值,而不仅仅是对角线。
int arr[][] = {{2, 1, 3}, {4,5,6}, {9,8,7} };
int min = arr[0][0];
for(int i=0; i<arr.length; i++) {
if(arr[i][i]<min)
min = arr[i][i];
}
System.out.println(min);
此代码仅检查对角线元素。
答案 1 :(得分:0)
我不确定我是否正确理解了这个问题,但我认为这就是你要找的:
public class ArrayStuff {
public static void main(String[] args) {
int[][] twoArray = {{2, 1, 3}, {4, 5, 6}, {9, 8, 7}};
// start with the highest value possible, that way anything that you find
// in the first loop will be smaller.
int minValue = Integer.MAX_VALUE;
// loop through the outer arrays
for (int i = 0; i < twoArray.length; i++) {
int j = i;
if (twoArray[i][j] < minValue) {
minValue = twoArray[i][j];
}
}
System.out.println(minValue);
}
}
这将遍历包含整数的数组,将每个内部数组索引的值与同一索引处的int值进行比较。因此,它将比较twoArray [0] [0],twoArray [1] [1]和twoArray [2] [2]中的值并返回最小值。