刚参加了个面试,有个上机算法题目,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内置数据类型(如int和long)表示范围的整数相加操作。这是因为Java中的int类型能存储的最大值是2^...
这篇博客“自己实现超大整数加法运算”探讨的就是如何编写代码来实现这种运算。 首先,我们需要了解超大整数的基本概念。在Java或其他编程语言中,标准的数据类型如int或long无法表示超出一定范围的数值。为了处理...
在Java编程语言中,处理大整数是一项重要的任务,特别是在需要进行高精度计算或存储超出普通整型数据类型范围的数值时。实验标题"JAVA实验报告 处理大整数"涉及的核心知识点是使用`java.math.BigInteger`类来处理...
`BigInteger`是Java的标准库`java.math`包的一部分,它允许我们执行任意精度的算术运算,包括加法、减法、乘法和除法,这正是`大整数四则运算`的核心。 `BigInteger`类的创建通常通过构造函数完成,可以传入字符串...
在Java编程中,创建一个图形化界面的计算器加法小程序是一项常见的练习,它涉及到Java Swing库的使用,事件处理和基本的算术运算。以下是对这个主题的详细解释: 首先,程序的核心是创建一个GUI(图形用户界面),...
在Java编程语言中,大整数(BigInteger)计算器是一个典型的示例,用于处理超过普通整型范围的数值计算。在“java大整数计算器代码”这个项目中,开发者可能使用了`java.math.BigInteger`类来实现大整数的加、减、乘...
使用Java编程语言书写的加法器代码,可以实现加法器效果,请大家参考!
在本项目中,我们有一个用JAVA语言编写的加法计算器,它利用了SWING库来构建用户界面,实现了一个基本的加法运算功能。 SWING是Java的标准GUI(图形用户界面)库,提供了丰富的组件集合,用于创建桌面应用程序。在...
本篇文章将重点讨论大整数的加法和减法算法,并演示如何在Java中通过运算符重载来实现这些功能。 首先,我们创建一个名为`Bigint`的类,它包含两个成员变量`op1`和`op2`,分别用于存储两个大整数的字符串表示,以及...
在Java编程语言中,处理大整数(超过`int`或`long`类型能表示的范围)是一项常见的任务,特别是在密码学、数学计算或者金融应用等领域。本篇将深入探讨如何利用Java实现两个大整数的相乘,尤其是面对1000位以上的...
通过以上步骤,一个简单的Java整数位计算器就完成了。这个项目对初学者来说是一个很好的起点,它涵盖了基本的编程概念,并提供了一个实践它们的机会。通过不断练习和改进,你可以逐步掌握更复杂的编程技巧和设计模式...
利用双向循环链表实现长整数的存储,每个...这是我用java写的,使用了双向循环链表,编译环境是myeclipse 8.0,可以运行,有人机交互界面,其中包含源代码,rar文件,还有报告。希望大家多多批评,提出建议,互相学习。
首先,我们需要了解Java中的数据类型,特别是`int`类型,它是用于存储整数的。在加法运算中,我们将使用`int`类型的变量来存储两个要相加的数字。例如: ```java int num1 = 5; // 第一个数字 int num2 = 7; // 第...
### Java编写的大整数四则运算:深入解析与理解 #### 概述 在计算机科学领域,处理大整数运算是一项挑战,特别是在超出标准整数类型(如`int`或`long`)所能表达的范围时。Java语言通过内置的`BigInteger`类提供了...
总之,`BigInteger`为Java开发者提供了解决大数运算的能力,通过其内置的`add`和`multiply`方法,我们可以轻松地处理任意大小的整数的加法和乘法。在处理`BigInteger`对象时,应考虑性能和内存使用,特别是在处理...
在实际编程中,很多编程语言提供了大整数的支持,例如Python的`int`类型、Java的`BigInteger`类等,它们提供了内置的大整数运算功能,简化了开发者的处理工作。然而,理解大整数的基本原理和实现方法对于深入学习...
Java 大整数高精度处理 Java 语言中对大整数和高精度的处理是非常重要的,以下是相关知识点的总结: 一、基本定义 在 Java 中,我们可以使用 Scanner 类来读取输入,例如: ```java import java.util.*; import ...
这种方式既简单又有效,可以防止大部分自动化攻击。 1. **Servlet生成加法验证码** 在Servlet中,我们首先需要生成两个随机整数,然后将它们相加得到结果。接着,我们可以使用Java的图形库(如Java AWT或JavaFX)...
在编程领域,尤其是在Java语言中,处理大整数是一项常见的任务。这通常涉及到数学运算,如加法和减法,而这些操作在标准库中可能不是最高效的解决方案,特别是当处理超过`int`或`long`类型所能表示的数值范围时。在...