package com.duapp.itfanr;
import java.math.*;
import java.util.Arrays;
public class CharDemo {
public static void main(String args[]) {
String num1 = "1234";
String num2 = "789";//此处没有考虑到负数情况
System.out.print(plusBigNum(num1, num2));
}
static String plusBigNum(String num1, String num2) {
int len1 = num1.length();
int len2 = num2.length();
// 格式化两个数,使之长度相同
if (len1 > len2) {
for (int i = 0; i < len1 - len2; i++) {
num2 = "0" + num2;
}
} else if (len2 > len1) {
for (int i = 0; i < len2 - len1; i++) {
num1 = "0" + num1;
}
}
int[] numArr1 = str2IntArr(num1);
int[] numArr2 = str2IntArr(num2);
int[] result = add(numArr1, numArr2);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < result.length; i++) {
if (result[result.length-1] ==0 &&i==result.length-1){
break ;
}
else sb.append(result[i]);
}
return sb.reverse().toString();
}
static int[] str2IntArr(String str) {
StringBuffer sb = new StringBuffer(str);
String rvsstr = sb.reverse().toString();
int len = rvsstr.length();
int[] out = new int[len];
for (int i = 0; i < len; i++) {
out[i] = Integer.parseInt(rvsstr.charAt(i) + "");
}
return out;
}
public static int[] add(int a[], int b[]) {
int maxLen = a.length;
int[] sum = new int[maxLen + 1];
int d = 0;
for (int i = 0; i < maxLen; i++) {
int tempSum = a[i] + b[i] + d;
sum[i] = tempSum % 10;
d = tempSum / 10; // 进位
}
return sum;
}
}
Integer.parseInt 用于将字符转为十进制数字 myString.charAt 用于String转字符数组 参考: [1].
http://for-dream.iteye.com/blog/1570479 [2].
http://bbs.youkuaiyun.com/topics/240045624 [3].
http://hehaiztc.iteye.com/blog/1175538
转载于:https://my.oschina.net/itfanr/blog/195624