因为数值过于巨大,使用int、long肯定是无法存储的,所以只能采用高精度算法,模拟小学生的算术计算。注意输出的细节就好。
package big_number; import java.util.Scanner; /** * A + B Problem II * 大整数之间的加法 * Created by yangyuan on 2017/12/8. */ public class Problem1002 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int caseCount = scanner.nextInt(); for (int i = 1; i <= caseCount; i++) { String aStr = scanner.next(); String bStr = scanner.next(); System.out.println("Case " + i + ":"); System.out.print(aStr + " + " + bStr + " = "); char[] a = aStr.toCharArray(); char[] b = bStr.toCharArray(); if (a.length >= b.length) calculate(a, b); else calculate(b, a); if (i < caseCount) System.out.println(); } } public static void calculate(char[] x, char[] y) { final char zero = '0'; for (int i = x.length - 1, j = y.length - 1; j >= 0; i--, j--) { int a = x[i] - zero; int b = y[j] - zero; if (a + b < 10) x[i] = (char)(a + b + zero); else { x[i] = (char)(a + b - 10 + zero); if (i - 1 >= 0) x[i - 1]++; else System.out.print("1"); //如果进入这里,则打印完最高位就会退出循环 } } System.out.println(x); } }