MaxPairWiseProductJava

MaxPairWiseProductJava,java,Java,我编写了获得最大两两乘积的方法,但当我测试输入100000和90000的方法时,我无法得到一个长值。我得到结果410065408 static long getMaxPairwiseProduct(int[] numbers) { int index1 = 0; for (int i = 1; i < numbers.length; i++) { if (numbers[index1] < numbers[i]) i

我编写了获得最大两两乘积的方法,但当我测试输入100000和90000的方法时,我无法得到一个长值。我得到结果410065408

static long getMaxPairwiseProduct(int[] numbers) {

      int index1 = 0;

      for (int i = 1; i < numbers.length; i++) {
        if (numbers[index1] < numbers[i])
            index1 = i;
    }

      int index2;

      if (index1 == 0){
          index2 = 1;
      }else {
          index2 = 0;
      }

      for (int i = 0; i < numbers.length; i++) {
        if(numbers[i]!=numbers[index1] && numbers[index2]<numbers[i]){
            index2 = i;
        }
    }
      long res = (long)(numbers[index1] * numbers[index2]);

      return res;
}
public static void main(String[] args) {
    int[] numbers = new int[2];
    numbers[0] = 100000;
    numbers[1] = 90000;
    System.out.println(getMaxPairwiseProduct(numbers));

}
静态长getMaxPairwiseProduct(int[]个数字){
int index1=0;
对于(int i=1;i如果(numbers[i]!=numbers[index1]&&numbers[index2]在这里,您只是在铸造结果

long res = (long)(numbers[index1] * numbers[index2]);
因此,在进行乘法运算时,它将溢出整数

long res = ((long)numbers[index1] * numbers[index2]);

在这里,你只是在铸造结果

long res = (long)(numbers[index1] * numbers[index2]);
因此,在进行乘法运算时,它将溢出整数

long res = ((long)numbers[index1] * numbers[index2]);

你需要在乘法之前施放。你需要在乘法之前施放。你只需要施放一面。你只需要施放一面。