代码改变世界

java实现两个大数的相加

2012-03-22 18:55  金融与IT的极速狂想曲  阅读(419)  评论(0编辑  收藏  举报

对于大数,一般的数据类型无法存储,可以用字符串来处理。

 

public class addBigData {
public static void main(String[] args)
{
char[] str="111111111111111111111111111".toCharArray();
char[] str1="4343999999999999999999999999999".toCharArray();
int maxS=(str.length>=str1.length)?str.length:str1.length;
int minS=(str.length>=str1.length)?str1.length:str.length;
int carry=0;
char[] ch=new char[maxS+1];
int temp;
for(int i=0;i<minS;i++)
{
temp=str[i]+str1[i]+carry-48*2;
if(temp>=10)
{
carry=1;
ch[i]=(char)(temp-10+48);
}
else
{
carry=0;
ch[i]=(char)(temp+48);
}


}
if(carry==1)
{
for(int i=minS;i<maxS;i++)
{
temp=str1[i]+carry-48;
if(temp>=10)
{
carry=1;
ch[i]=(char)(temp-10+48);
}
else
{
ch[i]=(char)(temp+48);
for(int j=minS+1;j<maxS;j++)
{
ch[j]=str1[j];
}
break;
}
}
if(carry==1)
{
ch[maxS]='1';
}
for(int i=0;i<ch.length;i++)
{
System.out.print(ch[i]);
}
System.out.println();
}
else
{
for(int i=minS;i<maxS;i++)
{
ch[i]=str1[i];
}
for(int i=0;i<ch.length-1;i++)
{
System.out.print(ch[i]);
}
System.out.println();
}

}

}