public static String add(String a, String b){
int ai = 1;//数a的倒数第i位
int bi = 1;//数b的倒数第i位
int flag = 0;//进位标志
String rs = "";
while (ai <= a.length() || bi <= b.length() || flag > 0){//当存在某个数还没取完他的位时或者最后还有进位值时循环进行
int m = ai <= a.length() ? a.charAt(a.length() - ai) - '0' : 0;//当前面没有位时往前面补0来和另外一个数的位进行计算
int n = bi <= b.length() ? b.charAt(b.length() - bi) - '0' : 0;
rs = (m + n + flag) % 10 + rs;
flag = (m + n + flag) / 10;
ai ++;
bi ++;
}
return rs;
}
注:此方法为在格式检验正常的前提下进行加运算,减运算也大同小异。
- 测试:
public class Main {
public static void main(String[] args) {
String a = "45013721045657899654321331464";
String b = "173564982564646523132177995456445632136";
String rs = add(a,b);
System.out.println(rs);
}