无法处理大数字

时间:2018-06-17 13:59:27

标签: java

import java.io.;
import java.util.;
import java.math.*;

public class Solution {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int b=sc.nextInt();
        BigInteger bi1=new BigInteger(String.valueOf(a));
        BigInteger bi2=new BigInteger(String.valueOf(b));
        BigInteger biadd=bi1.add(bi2);
        BigInteger bimultiply=bi1.multiply(bi2);
        System.out.println(biadd);
        System.out.println(bimultiply);
    }
}

小数字可以轻松添加和增加,但在运行此代码的大数字时会显示运行时错误

3 个答案:

答案 0 :(得分:1)

你应该这样做:

import java.math.BigInteger;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        String a = sc.next();

        String b = sc.next();

        BigInteger bi1 = new BigInteger(a);

        BigInteger bi2 = new BigInteger(b);
        BigInteger biadd = bi1.add(bi2);
        BigInteger bimultiply = bi1.multiply(bi2);
        System.out.println(biadd);
        System.out.println(bimultiply);
    }
}

因为nextInt()期望某些范围[-2 ^ 31,2 ^ 31-1],已经尝试将您在控制台中输入的字符串转换为整数。

您要做的是将输入读入字符串并将该字符串转换为BigInteger

答案 1 :(得分:1)

当您尝试按int a=sc.nextInt()获取大号时,int可能太大了。

您可以将其更改为:

String a = sc.nextLine();
String b = sc.nextLine();
BigInteger bi1 = new BigInteger(a);
BigInteger bi2 = new BigInteger(b);

而且,您应该使用

import java.io.*;
import java.util.*;

答案 2 :(得分:1)

尝试此代码将BigInteger作为输入而非Int。

   import java.io.*;
   import java.util.*;
   import java.math.*;

 public class Solution {

    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);

    BigInteger a = sc.nextBigInteger();
    BigInteger b = sc.nextBigInteger();

    BigInteger bi1=new BigInteger(String.valueOf(a));
    BigInteger bi2=new BigInteger(String.valueOf(b));
    BigInteger biadd=bi1.add(bi2);
    BigInteger bimultiply=bi1.multiply(bi2);
    System.out.println(biadd);
    System.out.println(bimultiply);
   }
}