Java 二维阵列中最大值与最小值之差

Java 二维阵列中最大值与最小值之差,java,max,min,absolute,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))

下面是我的程序,它试图找到二维数组中最大值和最小值之差的绝对值。不幸的是,我一直收到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);    
  }
}
主类
{
公共静态void main(字符串[]args)
{
int[]a={
{-5,-2,-3,7},
{1,-5,-2,2},
{1,-2,3,-4}
};
System.out.println(diffHiLo(a));//应打印12
}
公共静态int-diffHiLo(int[][]数组)
{
int max=整数最大值;
int min=Integer.min\u值;
for(int[]酷:数组){
for(intz:cool){
如果(z最大值)
max=z;
}
}
返回数学绝对值(最大最小值);
}
}

您应该将
min
初始化为
Integer.MAX\u VALUE
并将
MAX
初始化为
Integer.min\u VALUE
。您的操作正好相反,导致循环什么也不做(因为
z
从来都不小于
min
或大于
MAX


您得到的结果是
1
,因为
min
max
不会被循环和
Integer更改。max\u VALUE-Integer。min\u VALUE
-1
(由于数字溢出).

您向后初始化
max
min
。设置
max=Integer.min\u值
min=Integer.max\u值;