java中的大数和字符串。输入两个数,中间是操作符(+或*),先把输入原样输出,再判断第一个数,第二个数,以及结果是否超过int。题目要求非负数,那么就只考虑2147483647就行了(常识,最好背下来)。然而会有前导零,所以不能直接用BigInteger输入。用字符串过渡一下就行了。
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args){
BigInteger a, b, s;
BigInteger m = new BigInteger("2147483647");
String p, op, q;
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
p = cin.next();
op = cin.next();
q = cin.next();
System.out.println(p + " " + op + " " + q);
a = new BigInteger(p, 10);
b = new BigInteger(q, 10);
if(op.charAt(0) == '+')s = a.add(b);
else s = a.multiply(b);
if(a.compareTo(m) > 0)System.out.println("first number too big");
if(b.compareTo(m) > 0)System.out.println("second number too big");
if(s.compareTo(m) > 0)System.out.println("result too big");
}
}
}