相邻元素相乘,比较哪个值大

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保证更大