// 对两个字符串,不使用long,int等类型计算 @Test public void jia(){ String ax = "9234562343465434567"; String bx = "1234567234563246754324567"; char [] axArrs = ax.toCharArray(); char [] bxArrs = bx.toCharArray(); char [] tMax = axArrs.length> bxArrs.length?axArrs:bxArrs;//max char [] tMin = axArrs.length> bxArrs.length?bxArrs:axArrs;//min int len = tMax.length - tMin.length; char [] tArrAppend = new char[len]; char [] tMin2 = new char[tMin.length]; System.arraycopy(tMax, 0, tArrAppend, 0, len); System.arraycopy(tMax, len, tMin2, 0, tMin2.length); int [] tMin3 = new int[tMin.length]; boolean flag = false; for (int i=tMin.length-1;i>-1;i--){ int count = Character.getNumericValue(tMin2[i])+Character.getNumericValue(tMin[i]) + (flag?1:0); int b1 = count; flag = count>9; if (flag){ b1 = count % 10; } tMin3[i]= b1; } int [] t = new int[tArrAppend.length]; for (int i=tArrAppend.length-1;i>-1;i--){ int count = Character.getNumericValue(tArrAppend[i])+ (flag?1:0); int b1 = count; flag = count>9; if (flag){ b1 = count % 10; } t[i] = b1; } int [] result = new int[tMax.length+ (flag?1:0)]; if (flag){ result[0] = 1; } System.arraycopy(t,0,result,(flag?1:0),t.length); System.arraycopy(tMin3,0,result,t.length+(flag?1:0),tMin3.length); System.out.println(ax+"\t+\t" +bx+ "\t=\t"+ Arrays.toString(result).replaceAll("[\\[,\\]\\s*]","")); }
?
原文:http://walker-v5.iteye.com/blog/2234718