有点傻 发表于 2009-1-22 16:49:32

超长整数加法算法实现(不调用java.math.*;)

public class MathAdd {
   
    public static void main(String[] args){
      String addA="30812";
      String addB="208";
      System.out.println(addA " " addB "=" strvalue(addA,addB));
    }
   
    public static String strvalue(String addA,String addB){
      String strvalue="";
      int lenA=addA.length();
      int lenB=addB.length();
      int templen=0;
      //调整长度相同
      if(lenA>=lenB){
            templen=lenA-lenB;
            addB=maxlen(addB,templen);
      }else{
            templen=lenB-lenA;
            addA=maxlen(addA,templen);
      }
      char addcharA[]=addA.toCharArray();
      char addcharB[]=addB.toCharArray();
      int len=addcharA.length;
      int valueC[]=new int;
      for(int i=0;i<len;i){
            int a=Integer.parseInt(String.valueOf(addcharA));
            int b=Integer.parseInt(String.valueOf(addcharB));
            valueC=a b;
            }//每项相加存储
      int tmp=0;
      //处理进位
      for(int i=valueC.length-1;i>=0;i--){
            if(valueC>=10){
                strvalue=String.valueOf(valueC tmp-10) strvalue;
                tmp=valueC/10;
            }else{
                strvalue=String.valueOf(valueC tmp) strvalue;
                tmp=0;
            }
      }
      return strvalue;
    }
   
    //调整长度,使其长度一样
    private static String maxlen(String str,int templen){
      String strmax=null;
      StringBuffer buff=new StringBuffer();
      for(int i=0;i<templen;i){
            buff.append("0");
      }
      strmax=buff.toString() str;
      return strmax;
    }
}
页: [1]
查看完整版本: 超长整数加法算法实现(不调用java.math.*;)