本章讲顺序表的应用之大整数求和。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();
	}
}
本案例是通过数组来存储大整数的,可以运算特别大的加法运算。

如果有什么不清楚或者有啥疑问意见可以加我QQ/微信  208017534  / qiang220316,欢迎一起交流一起进步。




本文转载:CSDN博客