猿问

如何在java中将两个长值相乘

我试图从数字数组中乘以两个最大的数字。它适用于小数字。


正确的输入/输出 - 这是有效的:


3 10 2 8 80


正确的输入/输出 - 这是失败的:


2 100000 90000

9000000000

然而,我的输出是 10000000000。


有人能告诉我我的代码有什么问题吗?


public static Long sumPairwise(Long[] numbers){


        int index=0;

        int n = numbers.length;

        for(int i=1;i<n;i++){

            if(numbers[i]>numbers[index])

                    index=i;

        }

        numbers[n-1]= numbers[index];

        index=0;

        for(int j=1;j<n-1;j++){

        if(numbers[j]>numbers[index])

                index=j;

        }

        numbers[n-2]=numbers[index];

        Long product = (numbers[n-2])*(numbers[n-1]);


    return product ;

}

public static void main(String [] args){

    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();

    Long numbers[] = new Long[n];

    for (int i=0;i<n;i++)

    numbers[i]= sc.nextLong();

    System.out.println(sumPairwise(numbers));


}


墨色风雨
浏览 151回答 3
3回答

一只名叫tom的猫

而不是Long尝试使用BigInteger乘以适合的较大值long,否则您的结果可能会溢出。使用BigDecimal替代浮点数相乘。
随时随地看视频慕课网APP

相关分类

Java
我要回答