首页 > 解决方案 > 即使使用很长的错误答案,如何克服整数溢出问题?

问题描述

对于输入 2:100000,90000 得到错误的答案,即使我用了很长时间

import java.util.*;
import java.io.*;
class Main
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);

        int a = s.nextInt();

        int arr[] = new int[a];

        for(int i=0;i<a;i++)
            arr[i] = s.nextInt();

        Arrays.sort(arr);

        long sum=0;

        sum=(arr[a-1])*(arr[a-2]); 

        System.out.println(sum);

    }
}

即使使用很长的错误答案,如何克服整数溢出问题?

标签: javaarrays

解决方案


sum=(arr[a-1])*(arr[a-2]); 

这将一个int乘以一个int,然后将int结果(可能已经溢出)分配给一个long变量。

要使用算术,请写

sum = (long) arr[a-1] * (long) arr[a-2]; 

你不需要两个演员表,但他们似乎更清楚。


推荐阅读