题解 | 高精度整数加法
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { String firstStr = scanner.nextLine(); String secondStr = scanner.nextLine(); int diffNum = firstStr.length() - secondStr.length(); if(diffNum > 0) { for(int i = 0; i < diffNum; i ++) { secondStr = "0" + secondStr; } }else if (diffNum < 0) { diffNum = Math.abs(diffNum); for(int i = 0; i < diffNum; i ++) { firstStr = "0" + firstStr; } } int pos1 = firstStr.length() - 1; int pos2 = secondStr.length() - 1; StringBuilder addSb = new StringBuilder(); boolean haveCarry = false; while(pos1 >=0 && pos2 >= 0) { char ch1 = firstStr.charAt(pos1); char ch2 = secondStr.charAt(pos2); int digit1 = ch1 - '0'; int digit2 = ch2 - '0'; int addResult = digit1 + digit2; if(haveCarry) { addResult = addResult + 1; haveCarry = false; } if(addResult >= 10) { haveCarry = true; addResult = addResult - 10; } addSb.append(addResult); pos1 -- ; pos2 --; } if(haveCarry) { addSb.append(1); } System.out.println(addSb.reverse()); } } }