题解 | #高精度整数加法#
高精度整数加法
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.next(); String b = in.next(); if(a.length()<b.length()){ String temp = b; b=a; a=temp; } //记录较短数字的长度 int bLength = b.length()-1; int jw = 0; StringBuilder result = new StringBuilder (); //按照长数字的长度从右到左进行遍历 for(int i=a.length()-1; i>=0; i--){ int sumSub = Integer.parseInt(a.substring(i,i+1)); //短长度数字是否遍历完 if(bLength>=0){ //没遍历完长数字最右一位+短数字最右一位+进位 sumSub = sumSub +Integer.parseInt(b.substring(bLength,bLength+1))+jw; }else{ //短数字已遍历完,直接用长数字最有一位加上仅为 sumSub = sumSub+jw; } //所得数字大于10则进位为1,小于10进位为0 jw = sumSub>=10?1:0; String sumString = sumSub+""; //判断是否为最左一位 if(i>0){ result.append(sumString.substring(sumString.length()-1,sumString.length())); }else{ result.append(new StringBuilder (sumString).reverse().toString()); } bLength = bLength-1; } System.out.println(result.reverse().toString()); } } }