江西广告网
标题:
超长整数加法算法实现(不调用java.math.*;)
[打印本页]
作者:
亿博
时间:
2009-1-14 08:26
标题:
超长整数加法算法实现(不调用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[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; } }
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2