String 超多位数相加

利用上篇写的StringOrder,再写一个"无聊的“面试老喜欢出的超多位数的String相加,代码如下:

 

public class StringAdd {
	
	public static void main(String[] args){
		String a1 = "112323441";
		String a2 = "2000";
	
		System.out.print(new StringAdd().realAdd(a1, a2));	
	}
	
	public String realAdd(String a1, String a2){
		String[] adds = new String[]{a1,a2};
		if(adds[0].length() > adds[1].length()){
			changeNumber(adds);
		}
		
		StringOrder s1Order = new StringOrder(adds[0],false);
		StringOrder s2Order = new StringOrder(adds[1],false);
		
		String[] cacheResult = new String[adds[1].length()+1];
		int cache = 0;	
		for(int i=0;i<adds[1].length();i++){
			String cachea1 = s1Order.stringNext();
			int _cachea1 = cachea1 == null?0:Integer.parseInt(cachea1);
			int _cachea2 = Integer.parseInt(s2Order.stringNext());
			
			cache =  _cachea1 + _cachea2;
			
			if("1".equals(cacheResult[adds[1].length()-i])){
				cache++;
			}
			
			if(cache < 10){
				cacheResult[adds[1].length()-i]= cache + "";
			}else{
				cacheResult[adds[1].length()-i]= cache % 10 + "";
				cacheResult[adds[1].length()-i-1]= cache / 10 + "";
			}
		}
		
		StringBuffer result = new StringBuffer();
		for(int i=0;i<cacheResult.length;i++){	
			if(cacheResult[i]!=null){
				result.append(cacheResult[i]);
			}	
		}
		
		return result.toString();
	}
	
	private void changeNumber(String[] adds){
		String s3 = adds[0];
		adds[0] = adds[1];
		adds[1] = s3;	
	}
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值