1、 * param numStr1 数1 * param numStr2 数2 * return 结果 public static String add(String numStr1, String numStr2) int numLen1 = numStr1.length(); int numLen2 = numStr2.length(); int numArray1 = new intnumLen1; /数字数组 int numArray2 = new intnumLen2; / 12345- 5,4,3,2,1 for(int i=0;inumLen1;i+) String c = num
2、Str1.substring(i,i+1); numArray1numLen1-i-1 = Integer.parseInt(c); /低位存字符串尾部数字 numLen2; String c = numStr2.substring(i,i+1); numArray2numLen2-i-1 = Integer.parseInt(c); int minLen = 0; /取长度小的数位数 int maxLen = 0; /取长度大的数位数 int maxArray = null; /长度大的数 if(numLen19) added = 1; /进1 resultArrayi = t-10; /当
3、前位计算结果 added = 0; /不进位 resultArrayi = t; /长度超出部分累加maxLen; int t = maxArrayi+added; /多余位数加上进位 resultArrayi = added; /最高位 /拼接结果 1,4,8,2,0 - 2841 StringBuilder builder = new StringBuilder(); for(int n=resultArray.length-1;n=0;n-) /如果最高位为0,移除 if(n=resultArray.length-1 & resultArrayresultArray.length-1=0
4、) continue; /跳过 builder.append(resultArrayn); return builder.toString(); * 两非负整数相减 public static String subtract(String numStr1,String numStr2) /数值大的数 if(numLen1 = numLen2) /等于 maxArray = getMaxNumber(numArray1,numArray2); int minArray = maxArray=numArray1?numArray2:numArray1; /数值小的数 int resultArray
5、 = new intmaxLen; /大数-小数,同位相减,小于0借位 int subtracted = 0; int t = maxArrayi - minArrayi - subtracted; /两数相减,再减借位 if(t0) subtracted = 1; /向高位借1,暂存起来 resultArrayi = t+10; /当前位计算结果(借1相当于借了10) subtracted = 0; /不借位 /大数超出部分减掉借位 int t = maxArrayi-subtracted; /多余位数减掉借位 boolean highBitNotEqualZero = false; /存在高位不为0的情况,低位0保留 /如果高位为0,移除 if(resultArrayn=0 & !highBitNotEqualZero & n!=0) /高位无用的0去除 highBitNotEqualZero = true; /找到不为0的位 if(maxArray = numArray1) /第一个数大或相等 else /第一个数小于第二个数,相减为负数 builder.insert(0,-); * 两非负整数相乘 public static String multiply(String numStr1,String numStr2) int minLen
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1