刚参加了个面试,有个上机算法题目,java 中大整数字符串的加法,很早就碰到过类似的题目,一直没有静下心想过,这次面试开始还在想是不是干脆使用Bigdecimal类,但是上机没有api文档,不知道bigdecimal是怎么拼的(⊙﹏⊙b汗),还是仔细的想了下,最后完成如下:
public class BigNumAdd {
public static void main(String[] args){
System.out.println(add("987654321","123456789"));
}
/**
* 高位补足0,使得两个数字长度相同
* @param num
* @return
*/
public static String createZero(int num){
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < num ; i++){
sb.append("0");
}
return sb.toString();
}
/**
* 大字符串数字加法
* @param data1
* @param data2
* @return
*/
public static String add(String data1 , String data2){
int len1 = data1.length();
int len2 = data2.length();
int num = len1 > len2 ? len1 - len2 : len2 - len1 ; //计算两个数相差的位数
if(len1 > len2){
data2 = createZero(num) + data2 ;
}else{
data1 = createZero(num) + data1 ;
}
char[] char1 = data1.toCharArray();
char[] char2 = data2.toCharArray();
int[] result = add(char1,char2); //一位一位相加拼成结果
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < result.length ; i++){
if(result[i] == 0 && i == 0){
sb.append("");
}else{
sb.append(result[i]);
}
}
return sb.toString();
}
/**
* 位数相同的整数加法
*/
public static int[] add(char[] char1 , char[] char2){
int[] result = new int[char1.length + 1]; //相加后最多向上进1位
int shiweiNum = 0; //每位相加后的十位数字
int len = char1.length;
for(int i = len - 1 , j = i + 1; i >= 0 ; i--,j--){
int num1 = Integer.parseInt(char1[i]+"");
int num2 = Integer.parseInt(char2[i]+"");
int count = num1 + num2 + shiweiNum;
result[j] = count % 10;
shiweiNum = count / 10;
}
return result;
}
}
分享到:
相关推荐
任意长整数加法课件,主要是关于java的整数之间的加法运算代码
主要介绍了Java实现图形化界面的计算器加法小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用Java编程语言书写的加法器代码,可以实现加法器效果,请大家参考!
写一个表示大整数(>2256)的对象( C++或Java),能实现 +,-,*,/(运算符重载)写一个表示大整数(>2256)的对象( C++或Java),能实现 +,-,*,/(运算符重载)写一个表写一个表示大整数(>2256)的对象( ...
一个利用JAVA控件实现的简单的加法运算,内容简单实现,主要使用SWING控件
利用双向循环链表实现长整数的存储,每个...这是我用java写的,使用了双向循环链表,编译环境是myeclipse 8.0,可以运行,有人机交互界面,其中包含源代码,rar文件,还有报告。希望大家多多批评,提出建议,互相学习。
当创建一个计算器应用程序时,我们需要考虑如何实现基本的数学运算功能,包括加法、减法、乘法和除法。在这篇Java实战博客中,我将向您展示如何使用Java编程语言创建一个简单的计算器应用程序。我们将从创建用户界面...
6)每道题100以内的整数随机生成,加法和减法也是随机,但3个数的混合运算结果不能为负数; 7)考试的成绩累加写入“成绩.txt”文件,格式为“姓名 年级 班级 成绩”,如:“张三 **年级 *班 98”。 3、扩展功能要求...
集成了大整数的、加法、减法(仅限被减数大于减数)、乘法、乘以2、除以2、减去1、判断奇偶、判断是否为1等方法 乘法和加法经过多次测试和修改,基本上不存在什么问题,除法因为没用到所以没有写。 可以用到大数算法...
BGN是一种同态加密方案,是Boned D等人在2005提出的一种具有全同态性质的加密方案。和传统的仅能支持单同态的elgamal和paillier加密方案...BGN的实现我们主要使用JAVA中的大整数math.BigInteger类以及双线性库JPBC实现
Java实现 简单 LISP 算术表达式(以下简称表达式)定义如下: (1) 一个 0..9 的整数;或者 (2)(运算符 表达式 表达式) 例如,6,(+45),(+(+25)8) 都是表达式,其值分别为6,9和15。 【任务要求】 实现LISP加法表达式的...
如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算。
java随机数加法 完全java代码,很简单,适合初学者查看。易懂易学、
简单JAVA计算器程序 自己写的 很简单 只给需要的人
采用WindowsBuilder构建界面,用HashMap储存多项式,实现多项式的加减运算,求导。通过最简行列式实现对求线性方程组的求解,并输出通解。有较好的容错处理,输入时指数用^表示,下标用_表示,eg:3X^2 2X_1
可以选择考试类型:1、练习 2、测试 可以选择计算类型:01、一位数的加法或减法 02、两位数的加法或减法 03、混合计算 04、程序结束 根据选择的计算类型,会随机生成不同位数的加减法题目 计算之后,会给出得分
用JAVA实现简单计算器,内含用完整的运行文件夹,可在NetBeans上直接运行
(2)编写一个Java Application程序,接受用户从键盘输入的10个整数,比较并输出其中的最大值和最小值。要求程序能对非法数据进行处理。 (3)编写一个Java Application程序,从键盘读取年份,输出该年份是否为闰年...
实现一个的目标代码生成程序 识别用户输入的关于标识符与整数的含加法 乘法的赋值表达式并输出四元式序列 1 赋值表达式文法如下: 0 S A 1 A i E 2 E E 3 E E E 4 E E+E 5 E E 6 E i 输入关于标识符与整数的...
两个数字相加的Java代码,可以是整数 浮点 等等