您的位置:首页 > 其它

大数相加,模拟计算器

2014-01-15 22:04 225 查看
package cn.sasuke;

public class Test{
public static void main(String[] args) {
String a ="11111111111111111111111111111111111111111111111111111111111111111111111111111111";
String b ="99999999999999999999999999999999999999999999999999999999999999999999999999999999";
System.out.println(add(a,b));
}

private static String add(String a, String b) {

if (!a.matches("\\d+")&&!b.matches("\\d+")) {
return null;
}
int lena =a.length();
int lenb =b.length();
int maxLen =lena>lenb? lena:lenb;
StringBuffer sBuffer =new StringBuffer();
int carry=0;
final int Jin =10;
int partSum=0;
int tmpA=0;
int tmpB=0;
for (int i = 0; i < maxLen; i++) {
if(i>=lena){
tmpA=0;
}else {
tmpA=a.charAt(lena-1-i)-48;
}
if (i>=lenb) {
tmpB=0;
}else {
tmpB=b.charAt(lenb-1-i)-48;
}
partSum=tmpA+tmpB+carry;
carry=partSum/10;
sBuffer.append(partSum%10);
}
if(carry==1){
sBuffer.append(1);
}
return sBuffer.reverse().toString();
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: