乘以相邻元素并比较具有较高值的元素



我正在尝试比较在相邻元素时具有更大商的比较:

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;

作为初始化。然后,下一个最大值将更大。

相关内容

  • 没有找到相关文章

最新更新