第一种暴力解法,直接将字符串转换为int型
public static String addStrings2(String num1, String num2) {
//String转换为int型
int i = Integer.valueOf(num1);
int j = Integer.valueOf(num2);
//int 转换为String
return String.valueOf(i+j);
}
第二种竖式计算
需要注意的是
1.两数字相加和的时候,要把进位的值相加了
2.两个长度的值应该用【或】的关系,一个长度截止了,与0相加
3.最后计算的时候,记得把进位的值加上
public static String addStrings(String num1, String num2) {
//采用竖式加法的问题
//遍历两个大数
int i = num1.length()-1;
int j = num2.length()-1;
//用temp 表示进位的值
// string 表示返回的值
int temp = 0;
int numint1 = 0;
int numint2 = 0;
int carry=0;
StringBuilder sb = new StringBuilder();
while(i>=0||j>=0){
//
if(i>=0){
numint1 = num1.charAt(i)-'0';
}else{
numint1 = 0;
}
if(j>=0){
numint2 = num2.charAt(j)-'0';
}else{
numint2 = 0;
}
//每个位置的值进行相加+进位的值
temp = numint1+numint2+carry;
sb.append(temp%10);
i--;
j--;
carry = temp/10;
}
if (carry!=0){
sb.append(carry);
}
return sb.reverse().toString();
//char转化为int型,方法一是int()强转;方法二是char-'0'
}
学习评论区优秀的加法计算代码,比我的简单
public static String addStrings3(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int carry = 0, i = num1.length()-1, j = num2.length()-1;
while(i >= 0 || j >= 0 || carry != 0){
if(i>=0) carry += num1.charAt(i--)-'0';
if(j>=0) carry += num2.charAt(j--)-'0';
sb.append(carry%10);
carry /= 10;
}
return sb.reverse().toString();
}