`
squll369
  • 浏览: 106948 次
  • 性别: 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;	
	}
}

 

 

 

分享到:
评论

相关推荐

    java 经典习题.doc

    例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出...

    最新JAVA编程题全集_50题及答案

    // 中位数变量 System.out.println("数据长度:"+len); left = 0; right = len - 1; while (left ) { //由于源数据不是顺序的,需先进行排序 int temp; for(int i=0;i;++i) { ...

    javascript文档

    for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 function 语句 声明一个新的函数。 getDate 方法 使用...

    微软JavaScript手册

    for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 function 语句 声明一个新的函数。 getDate 方法 使用...

    JScript 语言参考

    for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 function 语句 声明一个新的函数。 getDate 方法 使用...

    java 经典程序50道

    例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 import java.util.*; public class lianxi08 { public static void main(String[] args) { long a , b = 0, sum = 0; Scanner s = new ...

    达内 coreJava 习题答案

    // 由于水仙花数是三位数,故由100开始算起 int i, j, k; // i j k 分别为number 的百位、十位、个位 for (int sum; number; number++){ i=number/100; j=(number-i*100)/10; k=number-i*100-j*10; sum=i*i*i+...

    二维码编码解码器源码20130905

    这里EAN_13编码要求是13位长度的数字,并且满足:把所有偶数序号位上的数相加求和,用求出的和乘3,再把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和能被10整除。(这个规则校验在...

    二维码编码解码器源码

    这里EAN_13编码要求是13位长度的数字,并且满足:把所有偶数序号位上的数相加求和,用求出的和乘3,再把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数,然后得出和能被10整除。(这个规则校验在...

    VBSCRIPT中文手册

    加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的...

    vb Script参考文档

    加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的...

    C++大学教程,一本适合初学者的入门教材(part2)

    1.16 简单程序:两个整数相加 1.17 内存的概念 1.18 算术运算 1.19 判断:相等与关系运算符 1.20 新型头文件与名字空间 1.21 有关对象的思考 小结 术语 自测练习 自测练习答案 练习 第2章 控制结构 2.1 简介 ...

    C++大学教程,一本适合初学者的入门教材(part1)

    1.16 简单程序:两个整数相加 1.17 内存的概念 1.18 算术运算 1.19 判断:相等与关系运算符 1.20 新型头文件与名字空间 1.21 有关对象的思考 小结 术语 自测练习 自测练习答案 练习 第2章 控制结构 2.1 简介 ...

    java经典面试2010集锦100题(不看你后悔)

    D) 程序将字符型转换为unicode编码并和b的数值相加的和输出。 题目3: 下面的说法中,错误的是:d(选择1项) A) 在Java中标志符可以是字母、下划线、数字或$符号。 B) 在Java中布尔类型不能和数字之间不能来回...

    VBScript 语言参考

    加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的...

    VBScript 语言参考中文手册CHM

    加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的...

    VBSCRIP5 -ASP用法详解

    加法运算符 (+) 两数相加。 And 运算符 执行两个表达式的逻辑连接。 Array 函数 返回含一数组的 变体 。 Asc 函数 返回字符串首字母的 ANSI 字符代码。 赋值运算符 (=) 给变量或属性赋值。 Atn 函数 返回数的...

    大整数乘法

    cout两数相加的结果为:"; if(f==0) for(i=0;i;i++) cout[i]; else { cout; for(i=0;i;i++) cout[i]; } } if(g==2) { cout两数相减的结果为:"; if(f==0) for(i=0;i;i++) cout[i]; else { cout; ...

    C#微软培训资料

    第四章 数 据 类 型 .28 4.1 值 类 型 .28 4.2 引 用 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 ...

    常用算法代码

    | 所有数位相加 25 Number 数论 26 1 |递推求欧拉函数 PHI(I) 26 |单独求欧拉函数 PHI(X) 26 | GCD 最大公约数 26 | 快速 GCD 26 | 扩展 GCD 26 | 模线性方程 A * X = B (% N) 26 | 模线性方程组 26 | ...

Global site tag (gtag.js) - Google Analytics