我正在尝试比较在相邻元素时具有更大商的比较:
public static void main(String args[]) {
int[] inputArray = {-5, 8, -9, 1, -5, 4};
int x = 0;
long maxsofar = 0;
while (x < inputArray.length - 1) {
int currentmax = inputArray[x] * inputArray[x + 1];
maxsofar = (maxsofar > currentmax) ? maxsofar : currentmax;
}
x++;
}
System.out.println(maxsofar);
}
到目前为止,我的代码可以正常工作,但是当我尝试在数组上使用负整数时,它只是输出0。
可能是因为0比负数是>。当乘以负数时,您的所有相邻元素 ->
-5*8 = -40
8*-9 = -72
等。
so 0是最大一个。
您可以使用Math.abs((例如使用绝对值。或者,您可以将maxsofar设置为long.min_value即使是负数,也要获得最大的数字。您完成的方式,您获得了最大的数字>0。
以及您的程序的这种方式,可以完全适用于该数组(有5个Elemtents(。更好的方法是:
for (int i = 0; i < inputArray.length - 2; i++) {
int currentmax = inputArray[i] * inputArray[i + 1];
if (maxsofar < currentmax) {
maxsofar = currentmax;
} //No need to handle the case where you say A=A :)
}
甚至更好,您可以做Math.max(maxsofar,currentmax)
;
尝试使用:
long maxsofar = Long.MIN_VALUE;
作为初始化。然后,下一个最大值将更大。