如何摆脱这种溢出错误?

use*_*ser 0 java integer-overflow

我有一个代码,由于我正在处理大数字,因此输出错误.我想要一个解决方案,我怎么能改善它以适应大数字. 我应该使用哪种数据类型?

码:

    static int get(int n,int i,int digit)
    {
      int p;
      p=(int)Math.pow(10,i-1);
      n=n/p;
      return n%10;
    }
    static boolean check_pal(int n)
    {
      int digit;
      digit=(int) (Math.log10(n)+1);
      int a=0,b=0,i,j,p;
      int sum=0;
      for(i=1,j=digit-1 ; i<=digit ; i++,j-- )
      {
        a=(int) get(n,i,digit);
        sum+=a*Math.pow(10,j);
      }
      if(sum==n)
        return true;
      else
        return false;
    }
    static int reverse(int n)
    {
        int digit;
        digit=(int) (Math.log10(n)+1);
        int a=0,b=0,i,j,p;
        int sum=0;
        for(i=1,j=digit-1 ; i<=digit ; i++,j-- )
        {
            a=(int) get(n,i,digit);
            sum+=a*Math.pow(10,j);
        }
        return n+sum;
    }
    public static void main(String[] args) {

    try{
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        if(n<10 || n>999){
          System.out.println("None");   
            return;}
        boolean c;

        for(int i=1 ; i<=100 ; i++)
        {
            System.out.println("iteration"+i+" value is "+n);
        c=check_pal(n);
        if(c==true)
        {
            System.out.println(n);
            return;
        }

        n=reverse(n);
    }
    System.out.println("None");
    }

    catch(Exception e)
    {
       System.out.println("NONE"); 
    }
    }
Run Code Online (Sandbox Code Playgroud)

这是输出: 产量

在输出中,迭代17次得到负值,这表示溢出.我想要一个解决方案,以便所有输入在10到999之间.

这是问题定义点击这里!!