String a = “111147545…11”;
String b = “25456154…425”;
/*
求a+b
由于数字太长,只能存在String里,不能整体转成int/long来加,只能从头到尾一位一位的转换成int来加,
注意进位。
用一个for循环按每一位做加法,最后输出到一个String里
可以使用java函数:String.toCharArray() Integer.valueOf()
*/
private String test(){
String str1 = "999";
String str2 = "769";
StringBuilder str3 = new StringBuilder();
StringBuilder str4 = new StringBuilder();
String res_ge = null;
String res_shi = null;
String c1 = null;
String c2 = null;
String c3 = null;
int len1 = str1.length();
int len2 = str2.length();
int minLen = len1 >= len2 ? len2 : len1;
for (int i = 0; i <= minLen; i++){
if (i == minLen && len1 == minLen) {//len1最短,且要对str2的第i为操作
if (len2 == minLen){//len1 == len2
c3 = "0";
} else { // len2 > len1
c2 = str2.substring(len2 - 1 - i, len2 - i);
c3 = String.valueOf(Integer.parseInt(c2));
str4.append(str2.substring(0, len2 - len1 - 1));//多出的位数,暂放str4
}
} else if (i == minLen && len2 == minLen){//len1 > len2
c1 = str1.substring(len1-1-i, len1-i);
c3 = String.valueOf(Integer.parseInt(c1));
str4.append(str1.substring(0, len1 - len2 - 1));
} else {
c1 = str1.substring(len1 - 1 - i, len1 - i);
c2 = str2.substring(len2 - 1 - i, len2 - i);
c3 = String.valueOf(Integer.parseInt(c1) + Integer.parseInt(c2));
}
if (null != res_shi) {
c3 = String.valueOf(Integer.parseInt(c3) + 1);
res_shi = null;
}
if (c3.length() >= 2) {
res_shi = c3.substring(0, 1);
res_ge = c3.substring(1);
} else {//两数相加不大于10,或较短的一个数加完了,另一个数的下一位会走这
res_ge = c3.substring(0, 1);
}
str3.append(res_ge);
}
if (!TextUtils.isEmpty(str3)) {
return str4.append(str3.reverse()).toString();
}
return null;
}