对角线上的2D阵列的最小值? 【JAVA]

时间:2016-04-06 03:40:21

标签: java arrays

我目前停留在寻找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);

如果有人能帮助我,我将不胜感激!

2 个答案:

答案 0 :(得分:0)

    使用minD初始化的
  1. 0是问题所在。由于0小于您的任何值,因此无法输出正确的输出。

  2. 您的代码会检查所有矩阵值,而不仅仅是对角线。

    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);
    
  3. 此代码仅检查对角线元素。

答案 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]中的值并返回最小值。