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();
        }
    }
  • 相关阅读:
    控件与布局
    高性能mysql笔记 第一章 mysql架构
    简单排序——冒泡,选择,插入
    spring boot的默认配置
    nginx配置 负载均衡
    nginx+tomcat反向代理
    fiddler(4)安装--L
    fiddler(3)http协议-响应报文--L
    fiddler(2)http协议-请求报文--L
    Fiddler(1)简介--L
  • 原文地址:https://www.cnblogs.com/iyyy/p/9323313.html
Copyright © 2011-2022 走看看