注册
 找回密码
 注册
江西广告网
查看: 245|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-22 16:49:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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; } }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表