zoukankan      html  css  js  c++  java
  • 用java写一个两个任意长度字符串数字和的算法

    package com.cn.test.string;
    
    public class StringTest {
        public static void main(String[] args) {
           String str1 = getStringSum("999999999999999999999999999999999999999999999999999999999999999999999999999999","911911111111111111111111111111111111111111111111111111119999999999");
           System.out.println(str1);
        }
        
        public static String getStringSum(String num1,String num2) {
            StringBuffer result = new StringBuffer();
            //反转字符串  123 --> 321  8912 --> 2198
            num1 = new StringBuffer(num1).reverse().toString(); 
            num2 = new StringBuffer(num2).reverse().toString(); 
            int len1 = num1.length();
            int len2 = num2.length();
            int maxLen = len1 > len2 ? len1 : len2;
            int nTakeOver = 0 ; //进位
            //2.把两个字符串补齐,即短字符串的高位用0补齐
            if(len1 < len2){  // 3210
                for(int i = len1;i < len2; i++) {
                    num1 += "0";
                }
            } else if (len1 > len2){
                for(int i = len2 ; i < len1 ; i++)
                {
                    num2 += "0";
                }
            }
            System.out.println(num1);
            System.out.println(num2);
            //3.逐位相加  3210 2198  
            for(int i=0; i<maxLen; i++) {
                int nSum = Integer.parseInt(num1.charAt(i) +"") + Integer.parseInt(num2.charAt(i) +"")+ nTakeOver;
                nTakeOver = 0;
                System.out.println("maxLen:"+maxLen);
                if(i < (maxLen - 1)) {
                    if(nSum >= 10) { 
                        nTakeOver = 1;
                        result.append(nSum - 10);
                    }else {
                        nTakeOver = 0;
                        result.append(nSum);
                    }
                }else {
                    StringBuffer lastSum = new StringBuffer();
                    //最后一位数的加法特殊处理,先反转
                    lastSum.append(nSum).reverse();
                    result.append(lastSum);
                    result.reverse().toString();
                }
            }
            return result.toString();
        }
    }
  • 相关阅读:
    JS判断是PC端还是移动端
    js对象转数组
    js获取当前域名、Url、相对路径和参数以及指定参数
    javascript返回上一页的三种写法
    js正则归纳总结
    higtcharts 生成图表个数问题
    js如何处理后台传递过来的Map
    jQuey实现鼠标滑过整行变色
    <display:column>常用属性解释
    <display:table>常用属性解释
  • 原文地址:https://www.cnblogs.com/iyyy/p/9323313.html
Copyright © 2011-2022 走看看