介绍:输入两个数字,输出它们相加之后的结果。
约定:输入数据共两行。第一行为一个整数a,第二行为一个整数b。输出数据共一行一个数。为a和b相加之后的结果。
请尝试使用小学学过的竖式加法进行计算。将输入数据按照字符串输入后拆成一个一个的数字,然后逐位相加并求进位。
输入样例
127450750347603915789832750917694387195834106
231099480231850489102357234823178312
输出样例
127450750578703396021683240020051622019012418
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读入两个大整数
String a = scanner.nextLine();
String b = scanner.nextLine();
scanner.close();
// 逆序处理,便于从低位开始相加
a = new StringBuilder(a).reverse().toString();
b = new StringBuilder(b).reverse().toString();
// 确保a的长度不小于b的长度
if (a.length() < b.length()) {
String temp = a;
a = b;
b = temp;
}
String result = "";
int carry = 0; // 进位标记
// 逐位相加
for (int i = 0; i < a.length(); i++) {
int sum = carry;
sum += i < a.length() ? a.charAt(i) - '0' : 0;
sum += i < b.length() ? b.charAt(i) - '0' : 0;
result += (char)((sum % 10) + '0'); // 取余数作为当前位的结果
carry = sum / 10; // 取整作为进位
}
// 如果最后还有进位,需要将其加入结果中
if (carry != 0) {
result += (char)(carry + '0');
}
// 逆序输出结果
System.out.println(new StringBuilder(result).reverse().toString());
}
}
标签:String,大数,sum,length,carry,new,相加
From: https://www.cnblogs.com/aminor/p/17760543.html