Java之大数加减乘除——加法

发布时间 2023-04-17 00:06:17作者: 杪冬的鸡汤不好喝

之前构建的类是通过输入字符串转换成数组来实现大数计算,接下来就是做两个数组之间加法。

创建类的时候构造一个方法使其可以实现计算:就是类似有 a、b 都是BigLong这个类的,那a+b就可以调用a.add(b)实现加法。

数组加法其实就和小学竖式计算一样,先对齐,从最小位开始相加,超过十就前面进一,具体实现如下:

 

void add(BigLong b){
int ia=this.num.length;
int ib=b.num.length;
int m=ib,n=ia;
if(ia>ib){
m=ia;
n=ib;
}
int[] count=new int[m+2];
int i,j,z;
int flag=0;

for (i=ia-1,j=ib-1,z=m+1;i*j>0;i--,j--,z--){
count[z]=this.num[i]+b.num[j];
}
count[z]=this.num[i]+b.num[j];
i--;
j--;
z--;

if(i>-1){
while(i>=0){
count[z]=this.num[i];
i--;
z--;
}
}
if(j>-1){
while(j>=0){
count[z]=b.num[j];
j--;
z--;
}
}

for(i=m+1;i>=0;i--){
if(count[i]>=10){
count[i]=count[i]%10;
count[i-1]=count[i-1]+1;
}
}

for(i=0;i<count.length;i++){
if(count[i]!=0){
flag=1;
}
if(flag==1) System.out.print(count[i]);
}

}