相邻元素相乘,比较哪个值大
Multiplying adjacent elements and compare which has a higher value
我正在尝试比较相邻元素相乘时哪个商更大:
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
等等
所以0是最大值
例如,您可以使用 Math.abs() 来使用绝对值。或者您可以将 maxsofar 设置为 Long.MIN_VALUE 以获得最大的数字,即使是负数。你这样做的方式你得到最大的数字 > 0.
而且您的程序也可以通过这种方式准确地处理该数组(具有 5 个元素)。更好的方法是:
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;
作为初始化。那么下一个max保证更大
我正在尝试比较相邻元素相乘时哪个商更大:
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
等等
所以0是最大值
例如,您可以使用 Math.abs() 来使用绝对值。或者您可以将 maxsofar 设置为 Long.MIN_VALUE 以获得最大的数字,即使是负数。你这样做的方式你得到最大的数字 > 0.
而且您的程序也可以通过这种方式准确地处理该数组(具有 5 个元素)。更好的方法是:
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;
作为初始化。那么下一个max保证更大