题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String a = in.nextLine(); String b = in.nextLine(); // 找到循环的长度 int n = a.length() >= b.length() ? a.length() : b.length(); // 特殊数值判断 if (a.equals("0") && b.equals("0")) { System.out.println("0"); } StringBuffer sb = new StringBuffer(); // 保留进位 int pev = 0; for (int i = 0; i < n; i++) { char c1 = '0'; if (i < a.length()) { // 倒序获取值 c1 = a.charAt(a.length() - i - 1); } char c2 = '0'; if (i < b.length()) { c2 = b.charAt(b.length() - i - 1); } // 求对应位的值,注意加上进位 int sum = (c1 - '0') + (c2 - '0') + pev; if (sum >= 10) { sb.append(sum % 10); pev = sum / 10; } else { // 没有超过,进位修改为0 sb.append(sum); pev = 0; } } sb.append(pev); // 翻转字符串 String ans = sb.reverse().toString(); // 删除首位多余的0 while (ans.startsWith("0")) { ans = ans.substring(1); } System.out.println(ans); } } }