二维阵列中最大值和最小值的差异

时间:2017-05-01 02:21:01

标签: java max min absolute

下面是我的程序,它试图找到二维数组内最大值和最小值之差的绝对值。不幸的是,我继续收到1作为答案,当它应该是12(Math.abs(7 - ( - 5))。我的猜测是代码中有一个我错过的简单错误。

class Main
{
public static void main(String[] args)
{
    int[][] a = {
        {-5,-2,-3,7},
        {1,-5,-2,2},
        {1,-2,3,-4}
    };
    System.out.println(diffHiLo(a)); //should print 12
}

public static int diffHiLo(int[][] array)
{
    int max = Integer.MAX_VALUE;
    int min = Integer.MIN_VALUE;

    for (int[] cool : array){
      for(int z: cool){
        if (z < min )
          min = z;
        else if (z > max)
          max = z;
      }
    }

    return Math.abs(max-min);    
  }
}

1 个答案:

答案 0 :(得分:2)

您应该将min初始化为Integer.MAX_VALUE,将max初始化为Integer.MIN_VALUE。你正在做相反的事情,导致你的循环什么都不做(因为z永远不会小于min或大于max)。

您得到的结果是1,因为您的循环不会更改minmax,而Integer.MAX_VALUE-Integer.MIN_VALUE-1(由于数字溢出)。