1
2 public classMyBigInteger {3 privateStringBuffer data;4
5
6 publicMyBigInteger(){7 data = new StringBuffer("0");8 }9 publicMyBigInteger(String str){10 data = newStringBuffer(str);11 }12 publicMyBigInteger(StringBuffer str){13 data = newStringBuffer(str);14 }15
16 public intlength(){17 returndata.length();18 }19 publicString toString(){20 returndata.toString();21 }22
23 public booleanequals(Object obj){24 return data ==((MyBigInteger)obj).data;25 }26
27 /**
28 * 功能:进行两个非负整数的相加29 */
30 privateStringBuffer plusAdd(String strNum1,String strNum2){31 //把两个数字字符串倒置,并存入字符数组
32 char [] num1 = newStringBuffer(strNum1).reverse().toString().toCharArray();33 char [] num2 = newStringBuffer(strNum2).reverse().toString().toCharArray();34 int maxLength =Math.max(num1.length,num2.length);35 int minLength =Math.min(num1.length,num2.length);36 //n位和m位的非负整数相加的和,要么是max(n,m)位,要么是max(n,m)+1位。
37 StringBuffer value = newStringBuffer();38
39 /*--------------计算和数开始------------------------*/
40 int i,jinWei=0;41 for(i=0;i
49 jinWei =oneBitAdd(jinWei,num2,i,maxLength,value);50 if(jinWei != 0)51 value.append((char)(jinWei +'0'));52 /*--------------计算和数结束------------------------*/
53 returndeleteZero(value).reverse();54 }55 /**
56 * 进位加上字符数组一部分57 *@return
58 */
59 private int oneBitAdd(int jinWei,char []array,int beginIndex,intendIndex,StringBuffer value){60 inttemp;61 for(int i = beginIndex;i
69 /**
70 * 功能:较大的非负整数bigNumStr减去较小的非负整数smallNumStr71 */
72 privateStringBuffer plusMinus(String bigNumStr,String smallNumStr){73 //把两个数字字符串倒置,并存入字符数组
74 char [] num1 = newStringBuffer(bigNumStr).reverse().toString().toCharArray();75 char [] num2 = newStringBuffer(smallNumStr).reverse().toString().toCharArray();76 StringBuffer value = newStringBuffer();77
78 /*--------------计算减法开始--------------