`
squll369
  • 浏览: 108692 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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;	
	}
}

 

 

 

分享到:
评论

相关推荐

    vb.net三位数相加结果

    在VB.NET(Visual Basic .NET)中,进行三位数相加是基础的算术运算,主要涉及编程逻辑和变量的使用。在这个问题中,我们可能会遇到一个简单的任务,即接收两个或多个三位数,然后计算它们的总和。下面将详细讲解...

    超长正整数相加(string逆序逐位相加再反转)1

    然后,我们将这两个数字相加,加上上一位的进位(如果有的话),并将结果模10得到当前位的值。同时,我们计算当前位产生的进位,这是通过取和除以10的商得到的。 ```cpp temp = (x + y + step) % 10; step = (x + y...

    两个数相加c语言两个数相加c语言

    ### 两个数相加C语言实现 #### 背景介绍 在计算机编程领域,特别是对于初学者来说,实现两个数相加是一个非常基础且重要的练习。本篇文章将基于提供的C语言代码,深入分析如何使用C语言来实现两个字符串表示的大...

    C++实现大数相加

    2. **遍历**:从每一位开始(从末尾开始,即最低位),将两个数的对应位相加,同时检查是否需要进位。这里需要注意,字符串中的每个字符代表0-9之间的数字,因此需要将字符转换为对应的整数值('0' - '9' = 0 - 9)...

    任意大的两数相加,输出其和

    在编程领域,处理大整数的...为了进行全面的测试,我们需要设计各种边界情况,比如零、正数、负数、只有一位的数、多位的数以及包含前导零的数。测试应该覆盖所有可能的输入组合,确保算法在任何情况下都能正确工作。

    longint1111.rar_两个任意长 整数 相加

    标题“longint1111.rar_两个任意长 整数 相加”和描述“任意长整数相加问题 任意输入两个任意长的整数进行相加 可以得出正确结果”都指向了这一核心概念:如何设计一个程序,以处理可能具有任意多位数的整数,并正确...

    用c++的string实现大数运算

    2. **大数加法**:对于两个大数的加法,我们可以逐位相加,类似于小学数学中的竖式加法。从低位到高位,对每位进行加法运算,同时考虑进位。如果某位超过'9',则需要向前一位进一。这个过程可以用循环和条件判断实现...

    php-leetcode题解之各位相加.zip

    这个题目要求我们将一个整数的每一位数字相加,形成一个新的整数。在PHP编程中,处理这类问题通常涉及到字符串操作、数字转换以及循环结构。下面将详细解析这个问题的解决方案和相关的PHP知识点。 首先,我们需要...

    Java 程序将两个二进制字符串相加.docx

    第二种方法使用双指针技术,同时处理两个字符串的每一位,从右向左逐位相加。这里需要一个额外的变量来跟踪进位。在每一步,我们检查对应位置的数字(如果越界则视为0)加上进位,然后根据和的大小更新结果字符串和...

    achieve-the-hex-string-to-decimal-.rar_hex string to hex

    4. **累加结果**:将所有字符转换后的值相加,得到最终的十进制数。 在编程语言中,如Python,可以使用内置的函数`int()`完成这个转换,只需提供字符串和基数作为参数。例如,`int('1A', 16)`会返回26,因为'1'在...

    BigDecimal工具类.docx

    第二个方法add(String,String)是将两个字符串类型的数相加,然后返回BigDecimal类型的结果。第三个方法add(String,String,int)是将两个字符串类型的数相加,然后返回字符串类型的结果,并且可以指定保留的小数位数。...

    JAVA面试题解惑系列(六)——字符串(String)杂谈[收集].pdf

    在字符串拼接的场景中,如果直接使用`+`运算符连接多个`char`变量,例如`System.out.print(a + b + c + d + e + f)`,实际上会触发隐式的类型转换,`char`变量会被转换为对应的Unicode编码(整数值),然后进行数字...

    String Hex to DBL.zip_labview_labview字符串_labview进制

    由于16进制字符串可能表示超出32位或64位整数范围的值,因此可能需要将字符串分割为多个部分并分别转换,然后将结果相加。 2. **整数到双精度浮点数**:转换后的整数值可能需要进一步处理才能得到双精度浮点数。这...

    微机软件实验习题与答案().doc

    该文档是关于微机原理的一次软件实验,主要目的是实现两个多位十进制数的相加操作。实验中,这两个数以ASCII码的形式存储在内存的两个不同位置,分别是DATA1和DATA2为首的数据区中,低位在前。实验内容包括用户输入...

    使用C++的string实现高精度加法运算的实例代码

    首先,`std::string`在这里作为一个容器,用来存储由单个字符组成的数字,每个字符代表一个数字位。这种方式非常适合处理大整数,因为字符串可以容纳任意长度的字符序列。在实现过程中,首先需要反转输入的数字字符...

    jjg.rar_visual c_数加减_课程设计:大整数加

    1. 初始化两个大整数数组,分别存储要相加的数字。 2. 从低位到高位逐位进行相加,同时考虑进位。 3. 如果当前位相加结果超过9(在字符数组中为'9'),则需要向前一位进1,并将当前位设置为相加结果对10取模的结果。...

    java实现的18位身份证格式验证算法

    在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细介绍这些知识点。 1. **身份证号码结构** - 中国18位身份证号码由17位数字和最后一位校验码组成...

    大数相加法

    2. **转换与对齐**:通过循环将输入的字符串转换为数字数组,并且对齐两个数的位数,便于后续逐位相加。 3. **逐位相加与进位处理**:从最高有效位开始,逐位执行加法运算,并处理进位,确保每一位的数值都在0到9...

    java题库,超赞

    “&&”也是逻辑与运算符,但它具有短路特性,即如果第一个操作数已经能够确定整个表达式的结果,则不会计算第二个操作数。 4. Java中跳出多重嵌套循环通常使用标签(label)和break语句。 5. switch语句可以作用在...

Global site tag (gtag.js) - Google Analytics