首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

超长整数加法算法的JAVA实现

2009-01-14 
JAVA辅导
    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[len];
  for(int i=0;i<len;i++){
  int a=Integer.parseInt(String.valueOf(addcharA[i]));
  int b=Integer.parseInt(String.valueOf(addcharB[i]));
  valueC[i]=a+b;
  }//每项相加存储
  int tmp=0;
  //处理进位
  for(int i=valueC.length-1;i>=0;i--){
  if(valueC[i]>=10){
  strvalue=String.valueOf(valueC[i]+tmp-10)+strvalue;
  tmp=valueC[i]/10;
  }else{
  strvalue=String.valueOf(valueC[i]+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;
  }
  }
热点排行