您的位置:首页 > 编程语言 > Java开发

Java利用字符串实现整数格式相加求和

2017-03-02 14:20 253 查看
/**

* @description 不适用int,long,float,double,BigDecimal进行数据相加

* 字符串保存长度超过Java基本类型中数字的保存长度值

* @开心农场

*/

public class StringSum {

public static void main(String[] args) {

String a = “123456789”;

String b = “987654321”;

System.out.println(sum(a, b));

}

public static String sum(String aNum, String bNum) {
// 字符串翻转
String n1 = new StringBuffer(aNum).reverse().toString();
String n2 = new StringBuffer(bNum).reverse().toString();
int len = 0;
int aLen = aNum.length();
int bLen = bNum.length();
// 获取最长字符串的长度
len = (aLen >= bLen) ? aLen : bLen;
//判断是否溢出
boolean overFlow = false;
int nTakeOver = 0;
// 短字符串高位补0
if (aLen < bLen) {
for (int i = aLen; i < bLen; i++) {
n1 += "0";
}
} else {
for (int i = bLen; i < aLen; i++) {
n2 += "0";
}
}
//保存计算结果
StringBuffer buffer = new StringBuffer();
int bwInt = 0;
for (int i = 0; i < len; i++) {
int result = Integer.parseInt(n1.charAt(i) + "") + Integer.parseInt(n2.charAt(i)+ "");
result += bwInt;
//当前计算结果数字是否大于10
if (result >= 10) {
//最高位大于10则 在向高位借1
if (i == len - 1) {
overFlow = true;
//定义借位后高位数字为1
nTakeOver = 1;
}
//两数相加,如果大于10则获取十位数结果值
bwInt = result/10;
//当前位置添加个位数
buffer.append(result % 10);
} else {
buffer.append(result);
//没有上位则十位数为0
bwInt = 0;
}
}
//高位加1
if (overFlow) {
buffer.append(nTakeOver);
}
return buffer.reverse().toString();
}


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