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);
}
}
小数字可以轻松添加和增加,但在运行此代码的大数字时会显示运行时错误
答案 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);
}
}