下面是我的程序,它试图找到二维数组内最大值和最小值之差的绝对值。不幸的是,我继续收到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);
}
}
答案 0 :(得分:2)
您应该将min
初始化为Integer.MAX_VALUE
,将max
初始化为Integer.MIN_VALUE
。你正在做相反的事情,导致你的循环什么都不做(因为z
永远不会小于min
或大于max
)。
您得到的结果是1
,因为您的循环不会更改min
和max
,而Integer.MAX_VALUE-Integer.MIN_VALUE
是-1
(由于数字溢出)。