本章讲顺序表的应用之大整数求和。java中int,long,float,double都有他们自己的精度值,如果超过精度就没办法进行运算了。这里可以用顺序表进行大整数运算。
下面上代码看具体案例,进行解析:
package SequenceList;
public class LargeIntegerSum {
public int[] add(int aa[],int bb[]){
int[] a=new int[aa.length];
int[] b=new int[bb.length];
for(int j=aa.length-1;j>=0;j--){
a[aa.length-1-j]=aa[j];
}
for(int j=bb.length-1;j>=0;j--){
b[bb.length-1-j]=bb[j];
}
int a_length=a.length;
int b_length=b.length;
int c_length=0;
if(a_length>b_length){
c_length=a_length;
}else{
c_length=b_length;
}
int[] c=new int[c_length];
int flag=0;
int i=0;
while(i<a_length && i<b_length){
c[i]=(a[i]+b[i]+flag)%10;
flag=(a[i]+b[i]+flag)/10;
i++;
}
for(;i<a_length;i++){
c[i]=(a[i]+flag)%10;
flag=(a[i]+flag)/10;
}
for(;i<b_length;i++){
c[i]=(b[i]+flag)%10;
flag=(b[i]+flag)/10;
}
if(flag==1){
int[] temp=c;
c=new int[c_length+1];
for(int ii=0;ii<temp.length;ii++){
c[ii]=temp[ii];
}
c[c.length-1]=1;
}
int cc[]=new int[c.length];
for(int j=cc.length-1;j>=0;j--){
cc[cc.length-1-j]=c[j];
}
return cc;
}
public static void main(String[] args) {
LargeIntegerSum l=new LargeIntegerSum();
int a[]={9,2,3};
int b[]={9,1,9};
int[] c=l.add(a, b);
for(Integer i:c){
System.out.print(i);
}
System.out.println();
}
}
本案例是通过数组来存储大整数的,可以运算特别大的加法运算。