java:字符串实现大数相加
字符串实现大数相加
给定两个数字字符串,求出相加的和 思路:需要将两个字符串相对应的位进行相加,注意不能将整个字符串转化为数字,进行直接相加,这样会出现溢出的问题。
public String bigNumverAdd(String number1, String number2) { StringBuffer result = new StringBuffer(); //字符串反转 String n1 = new StringBuffer(number1).reverse().toString(); String n2 = new StringBuffer(number2).reverse().toString(); //获取长度 int len1 = n1.length(); int len2 = n2.length(); int maxLength = len1 > len2 ? len1 : len2; //进位标志 int flag = 0; //是否越界(最高位是否进1) boolean overFlow = false; //将两个字符串补齐,高位用了0补位 if (len1 < len2) { for (int i = len1; i < len2; i++) { n1 += "0"; } } if (len2 < len1) { for (int i = len2; i < len1; i++) { n2 += "0"; } } //进行相加 for (int i = 0; i < maxLength; i++) { int sum = Integer.parseInt(n1.charAt(i) + "") + Integer.parseInt(n2.charAt(i) + "") + flag; //判断是否进位 if (sum >= 10) { if (i == maxLength - 1) { overFlow = true; } flag = 1; result.append(sum - 10); } else { flag = 0; result.append(sum); } } //最高位是否是要进1 if (overFlow) { result.append(flag); } //讲结果反转返回 return result.reverse().toString(); }