字符串实现大数相加
给定两个数字字符串,求出相加的和
思路:需要将两个字符串相对应的位进行相加,注意不能将整个字符串转化为数字,进行直接相加,这样会出现溢出的问题。
public String bigNumverAdd(String number1, String number2) {
StringBuffer result = new StringBuffer();
//字符串反转
String n1 = new StringBuffer(number1).reverse().toString();
String n2 = new StringBuffer(number2).reverse().toString();
//获取长度
int len1 = n1.length();
int len2 = n2.length();
int maxLength = len1 > len2 ? len1 : len2;
//进位标志
int flag = 0;
//是否越界(最高位是否进1)
boolean overFlow = false;
//将两个字符串补齐,高位用了0补位
if (len1 < len2) {
for (int i = len1; i < len2; i++) {
n1 += "0";
}
}
if (len2 < len1) {
for (int i = len2; i < len1; i++) {
n2 += "0";
}
}
//进行相加
for (int i = 0; i < maxLength; i++) {
int sum = Integer.parseInt(n1.charAt(i) + "") + Integer.parseInt(n2.charAt(i) + "") + flag;
//判断是否进位
if (sum >= 10) {
if (i == maxLength - 1) {
overFlow = true;
}
flag = 1;
result.append(sum - 10);
} else {
flag = 0;
result.append(sum);
}
}
//最高位是否是要进1
if (overFlow) {
result.append(flag);
}
//讲结果反转返回
return result.reverse().toString();
}