public class Number {
private String str;
Number(String str){
this.str=str;
arr=new int[this.str.length()];
char[] cha=str.toCharArray();
for(int a=0;a
arr[a]=Integer.parseInt(new StringBuffer().append(cha[a]).toString());
}
}
private int[] arr=null;
public int[] getArr(){
return arr;
}
/**
* 两数相加
* @param num 加数
* @return 两数的和
*/
public Number add(Number num){
//创建一个数组用来存储和的每一位的数字
int[] temp=new int[this.arr.length>num.arr.length?this.arr.length+1 : num.arr.length+1];
//将已有的数据复制一份,长度和temp一致。没数字的位子用0填充
int[] numarr=new int[temp.length];
System.arraycopy(num.getArr(), 0, numarr, numarr.length-num.getArr().length, num.getArr().length);
int[] thisarr=new int[temp.length];
System.arraycopy(this.getArr(), 0, thisarr, thisarr.length-this.getArr().length, this.getArr().length);
//十进制加法的算法,逢10进1
for(int a=temp.length-1;a>=0;a--){
if((numarr[a]+thisarr[a])>9){
temp[a]+=((numarr[a]+thisarr[a])-10);
temp[a-1]+=1;
}else{
temp[a]+=(numarr[a]+thisarr[a]);
}
}
//将temp转换为字符串。返回
StringBuffer sb=new StringBuffer();
for(int a=0;a
sb.append(temp[a]);
}
if(temp[0]==0){
return new Number(sb.toString().substring(1, sb.length()));
}
return new Number(sb.toString());
}
}