大数相加是指数字太大,超过了基本数据类型的表数范围,只能用字符串形式来表示数字。 注意:我们假定输入的两个数字字符串是符合规范的,如:“12344214141411124”。 代码如下:
public static String addLargeNumber(String a, String b) { // 数字字符串a,b的倒数索引 int aIndex = 1; int bIndex = 1; // 进位 int flag = 0; String res = ""; while (aIndex <= a.length() || bIndex <= b.length() || flag > 0) { // 找到字符串倒数第 i 位上的数字 int aNum = aIndex <= a.length() ? a.charAt(a.length() - aIndex) - '0' : 0; int bNum = bIndex <= b.length() ? b.charAt(b.length() - bIndex) - '0' : 0; // 将两个数字相加 res = (aNum + bNum + flag) % 10 + res; // 判断是否进位 flag = (aNum + bNum + flag) / 10; aIndex++; bIndex++; } return res; }为了方便测试,我们使用较小的数据测试。 测试代码如下:
public static void main(String[] args) { // 341234325 String a = "34199939"; String b = "413299999"; System.out.println("计算结果:" + addLargeNumber(a, b)); System.out.println("正确结果:" + (34199939 + 413299999)); }结果如下: