import java.util.Scanner; import java.lang.StringBuilder; // 注意类名必须为 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(); System.out.println(getSum(a, b)); } } private static String getSum(String str1, String str2) { int lenDis = 0; //用0给较短的字符串补位,让两个字符串长度相等,便于运算 if (str1.length() > str2.length()) { lenDis = str1.length() - str2.length(); for (int i = 0; i < lenDis; i++) { str2 = 0 + str2; } } else { lenDis = str2.length() - str1.length(); for (int i = 0; i < lenDis; i++) { str1 = 0 + str1; } } StringBuilder sb = new StringBuilder(); char [] arr1 = str1.toCharArray(); char [] arr2 = str2.toCharArray(); int localValue = 0; int jinwei = 0; for (int i = arr2.length - 1; i >= 0; i--) { //从最右边对两个字符串的最后一个字符依次相加,如果大于等于10,则进位为1,否则进位为0,并计算当前位的结果 localValue = arr1[i] + arr2[i] - '0' - '0' + jinwei; if (localValue >= 10) { jinwei = 1; localValue = localValue - 10; }else{ jinwei = 0; } sb.append(localValue); } //判断最高位相加是否进位,如果进位,那就在最高位加1 if(jinwei>0){ sb.append(1); } return sb.reverse().toString(); } }