题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
import java.util.Scanner; import java.math.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 String line1 = in.nextLine(); String line2 = in.nextLine(); int maxLen = Math.max(line1.length() ,line2.length()); line1 = appendZero(line1 ,maxLen); line2 = appendZero(line2 ,maxLen); //进位 int add = 0; //最终结果集 StringBuilder sb = new StringBuilder(); for(int i = maxLen - 1 ; i >= 0 ; i--){ int i1 = Integer.parseInt(String.valueOf(line1.charAt(i))); int i2 = Integer.parseInt(String.valueOf(line2.charAt(i))); String sum = String.valueOf(i1 + i2 + add); if(sum.length() == 1){ sb.append(sum); add = 0; }else{ //相加结果最大也只会是2位数 sb.append(sum.charAt(1)); add = Integer.parseInt(String.valueOf(sum.charAt(0))); } } if(add > 0){ sb.append(add); } System.out.println(sb.reverse().toString()); } public static String appendZero(String str ,int len){ StringBuilder sb = new StringBuilder(); for(int i = 0; i < len - str.length() ; i++){ sb.append("0"); } sb.append(str); return sb.toString(); } }