联合国科教文组织要统计人口,显然一般的int不能满足需要,因此要求定义一个BigInteger的新类,实现超长整型数的加减乘除四则运算,我用转化为数组的方法实现了加、减,有点小bug,而且不知道怎么实现乘除:( import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; 
//6.7.11 public class BigInteger//定义长整型的类 {     private static final int add1Max=100;//可计算最长位数     private static final int add2Max=100;//同上     private char[] add1 = new char[add1Max];     private char[] add2 = new char[add1Max];     private int len1;     private int len2;     public void setAdd1() throws IOException     {         int i=0;         String sLine1;         System.out.print("Please input add1 : ");//输入第一个长整数         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));         sLine1=in.readLine();         for(;i<sLine1.length();i++)             add1[i]=sLine1.charAt(i);                  for(i=0;i<add1Max;i++)//len1=add1.length()         {             if(add1[i]!='\0')                 len1++;         }     }     public void setAdd2() throws IOException     {         int i=0;         String sLine2;         System.out.print("Please input add2 : ");//输入第二个长整数         BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));         sLine2 = in2.readLine();         for(i=0;i<sLine2.length();i++)             add2[i]=sLine2.charAt(i);                  for(i=0;i<add2Max;i++)//len2=add2.length()         {             if(add2[i]!='\0')                 len2++;         }     }     public char[] getAdd1()     {         return add1;     }     public char[] getAdd2()     {         return add2;     }     public int getLen1()     {         return len1;     }     public int getLen2()     {         return len2;     }     public void add(char[] add1,char[] add2)//BigInteger相加方法     {         int len = Math.max(len1,len2);         int i;         char[] temp1 = new char[len];         char[] temp2 = new char[len];         char[] result = new char[len+1];                          for(i=0;i<len1;i++)             temp1[len-1-i]=add1[len1-1-i];         for(i=0;i<len2;i++)             temp2[len-1-i]=add2[len2-1-i];                  int m=0;         for(i=0;i<len;i++)//相加         {             if(temp1[len-1-i]!=0)                 temp1[len-1-i]-=48;             if(temp2[len-1-i]!=0)                 temp2[len-1-i]-=48;             m=temp1[len-1-i]+temp2[len-1-i];             if(m>=10)             {                 m-=10;                 result[len-i]+=m;                 result[len-1-i]+=1;             }             else result[len-i]+=m;         }                  System.out.print("add1 + add2 = ");//输出相加结果         i=0;         if(result[0]==0)             i=1;             for(;i<len+1;i++)                 System.out.print(Integer.toString(result[i]));     }     public void sub(char[]sub1,char[]sub2)//BigInteger相减方法     {         int len = Math.max(len1,len2);         int i;         char[] temp1 = new char[len];         char[] temp2 = new char[len];         char[] result = new char[len+1];                          if(len1>len2)         {             for(i=0;i<len1;i++)                 temp1[len-1-i]=sub1[len1-1-i];             for(i=0;i<len2;i++)                 temp2[len-1-i]=sub2[len2-1-i];         }else//保证减数大于被减数         {             for(i=0;i<len1;i++)                 temp2[len-1-i]=sub1[len1-1-i];             for(i=0;i<len2;i++)                 temp1[len-1-i]=sub2[len2-1-i];         }                  int m=0;         for(i=0;i<len;i++)//相减         {             if(temp1[len-1-i]!=0)                 temp1[len-1-i]-=48;             if(temp2[len-1-i]!=0)                 temp2[len-1-i]-=48;             m=temp1[len-1-i]-temp2[len-1-i];             if(m<0)//如果计算的那一位的减数小于被减数那么相前一位借10             {                 m+=10;                 result[len-i]+=m;                 temp1[len-1-i]-=1;             }             else result[len-i]+=m;         }         System.out.print("add1 - add2 = ");//输出减法结果         i=0;         while(result[i]==0)             i++;         if((len2>len1)||(len1==len2&&sub1[0]<sub2[0]))             System.out.print("-");             for(;i<len+1;i++)                 System.out.print(Integer.toString(result[i]));     }     public static void main(String[] args) throws IOException//主方法         {         BigInteger big = new BigInteger();//生成一个BigInteger对象         big.setAdd1();//得到数1         big.setAdd2();//得到数2         char[] num1 = big.getAdd1();//相加         char[] num2 = big.getAdd2();//相减         int len1 = big.getLen1();         int len2 = big.getLen2();         System.out.println();         System.out.println("The length of add1 is : " + len1);         System.out.println("The length of add2 is : " + len2);         big.add(num1,num2);         System.out.println();         big.sub(num1,num2);     } }
   
 
  |