十进制数数组相加 java_面试那些事-用数组实现十进制数的相加

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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值