import java.util.Arrays;
/**
* 基本思路:将两个字符串转化为int数组然后和我们平常算两个数相加一样,从末尾开始加进位
* 需要注意的是:
* ①结果总和大的那个数位数一样或者比它多一位,看最后result[0]的值如果为0就不要计入结果中
* ②如果最后相加出来的结果为0则需要返回0
* ③两个数需要末位对对齐开始计算
* */
public class BigDataAdd {
public static void main(String[] args) {
System.out.println(solve("1258994789086810959258888307221656691275942378416703768","7007001981958278066472683068554254815482631701142544497"));
}
public static String solve (String s, String t) {
int max = s.length() > t.length() ? s.length() : t.length();
int resultLength = max + 1;
int data1[] = new int[max];
int data2[] = new int[max];
int result[] = new int[resultLength];
int temp = 0;
for(int i = max - 1;max - s.length() <= i;i--){
data1[i] = (int)s.charAt(i - max + s.length()) - 48;
}
System.out.println(Arrays.toString(data1));
for(int i = max - 1;max - t.length() <= i;i--){
data2[i] = (int)t.charAt(i - max + t.length()) - 48;
}
System.out.println(Arrays.toString(data2));
for(int i = result.length - 1;i > 0 ;i--){
result[i] = (data1[i - 1] + data2[i - 1] + temp) % 10;
if(data1[i - 1] + data2[i - 1] + temp >= 10){
temp = 1;
}else{
temp = 0;
}
}
result[0] = temp;
System.out.println(Arrays.toString(result));
String re = null;
if(result[0] == 0) {
re = "";
}else {
re = "1";
}
for(int i = 1;i < result.length;i++){
re = re + result[i];
}
return re;
}
}
大数加法以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
最新推荐文章于 2024-08-30 18:40:43 发布