導入Java . io . buffered reader;
導入Java . io . io exception;
導入Java . io . inputstreamreader;
公共類BigInteger//定義長整型的類。
{
private static final int add 1 max = 1000;//可以計算的最大位數
private static final int add 2 max = 1000;//同上
private char[]add 1 = new char[add 1 max];
private char[]add 2 = new char[add 1 max];
private int len 1;
private int len2
公共void setAdd1()拋出IOException
{
int I = 0;
string sline 1;
System.out.print("請輸入第壹個長整數:");//輸入第壹個長整數。
buffered reader in = new buffered reader(new InputStreamReader(system . in));
sline 1 = in . readline();
for(;我& ltsline 1 . length();i++)
add 1[I]= sline 1 . charat(I);
for(I = 0;我& ltadd 1 max;i++)//len 1 = add 1 . length()
{
if(add1[i]!='\0')
len 1++;
}
}
公共void setAdd2()拋出IOException
{
int I = 0;
字符串sLine2
System.out.print("請輸入第二個長整數:");//輸入第二個長整數。
buffered reader in2 = new buffered reader(new InputStreamReader(system . in));
sline 2 = in2 . readline();
for(I = 0;我& ltsline 2 . length();i++)
add 2[I]= sline 2 . charat(I);
for(I = 0;我& ltadd2Maxi++)//len2=add2.length()
{
if(add2[i]!='\0')
len 2++;
}
}
public char[] getAdd1()
{
返回add 1;
}
public char[] getAdd2()
{
返回add2
}
public int getLen1()
{
返回len 1;
}
public int getLen2()
{
返回len2
}
Public void add (char [] add1,char [] add2)//biginteger加法方法。
{
int len = Math.max(len1,len 2);
int I;
char[]temp 1 = new char[len];
char[]temp 2 = new char[len];
char[]result = new char[len+1];
for(I = 0;我& ltlen 1;i++)
temp 1[len-1-I]= add 1[len 1-1-I];
for(I = 0;我& ltlen2i++)
temp 2[len-1-I]= add 2[len 2-1-I];
int m = 0;
for(I = 0;我& ltlenI++)//添加
{
if(temp1[len-1-i]!=0)
temp 1[len-1-I]-= 48;
if(temp2[len-1-i]!=0)
temp 2[len-1-I]-= 48;
m = temp 1[len-1-I]+temp 2[len-1-I];
如果(m & gt=10)
{
m-= 10;
結果[len-I]+= m;
結果[len-1-I]+= 1;
}
else結果[len-I]+= m;
}
System.out.print("加法之和為:");//輸出加法結果。
I = 0;
if(結果[0]==0)
I = 1;
for(;我& ltlen+1;i++)
system . out . print(integer . tostring(result[I]));
}
公共靜態void main(string[]args)throwsioexception//main方法
{
big integer big = new big integer();//生成BigInteger對象。
big . setadd 1();//得到數字1。
big . setadd 2();//得到數字2
char[]num 1 = big . getadd 1();//添加
char[]num 2 = big . getadd 2();//減法
int len 1 = big . getlen 1();
int len 2 = big . get len 2();
system . out . println();
System.out.println("第壹個長整數的長度為"+len 1 ");
System.out.println("第二個長整數的長度為:"+len 2 ");
big.add(num1,num 2);
system . out . println();
}
}
運行結果如下:
請輸入第壹個長整數:222222222222222222222222222222222222222555555555555555555555
請輸入第二個長整數:888888888888888888888
第壹個長整數的長度是:66
第二個長整數的長度是:65
相加的和是:3111111111165438。8+011111111111111111122555555555555555555555554