import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BigIntegerOperation {
public static void main(String[] args) throws IOException {
/**
* 从控制台读取输入数据 格式为 num1空格num2 为空则exit
*/
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();
while(str!=null){
StringTokenizer st = new StringTokenizer(str," ");
String num1 = st.nextToken();
String num2 = st.nextToken();
int len1 = num1.length();
int len2 = num2.length();
/**
* 将不等长的两输入字符串格式化,比如 num1 = 123 num2 = 1234
* 经格式化后将成为num1 = 0123 num2 = 1234为方便计算
*/
if(len1 > len2){
for(int i=0; i< len1-len2; i++){
num2 = "0"+num2;
}
}else if(len2>len1){
for(int i=0; i< len2-len1; i++){
num1 = "0"+num1;
}
}
int[] arr1 = BigIntegerOperation.str2intArr(num1);
int[] arr2 = BigIntegerOperation.str2intArr(num2);
arr1 = BigIntegerOperation.reverse(arr1);
arr2 = BigIntegerOperation.reverse(arr2);
int[] result = BigIntegerOperation.add(arr1, arr2);
// System.out.print(num1 +" + " + num2 +" = ");
for(int i=result.length-1; i>=0; i--){
if(i == result.length-1 && result[i] == 0) continue;
System.out.print(result[i]);
}
str = in.readLine();
}
}
/**
* 倒置数组元素
*/
public static int [] reverse(int[] arr){
int len = arr.length;
for(int i = 0,j = len-1; i<j; i++,j--){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
/**
* 将字符串转换成整型数组
*/
public static int [] str2intArr(String str){
int len = str.length();
int [] arr = new int[len];
for(int i = 0 ; i<len; i++){
arr[i] = str.charAt(i) - '0' ;
}
return arr;
}
/**
* 核心方法 两个整型数组相加
*/
public static int [] add(int a[], int b[]){
int maxLen = a.length;
int[] sum = new int[maxLen+1];
for(int i = 0; i< maxLen ; i++){
int tempSum = a[i] + b[i];
sum[i] += tempSum%10;
int d = tempSum/10; //进位
sum[i+1] += d;
}
return sum;
}
}
分享到:
相关推荐
java实现大数相加,在不使用BigInteger工具的前提下实现大数相加
大数相乘算法,java代码,包含独立大数相加算法 其中bigNumberPlus(String s1,String s2)为大数相加方法 bigNumberMultiply(String s1,String s2)为大数相乘方法
本篇文章将详细讲解如何在Java中实现大数相加,同时考虑异常处理和代码的可拓展性。 首先,Java标准库提供了一个名为`BigInteger`的类,用于处理任意精度的大整数。但是,为了理解基本的算法和提升编程能力,我们...
以上就是使用Java的`BigInteger`类实现大数相加的方法。通过这个类,我们可以处理任意大小的整数,并进行复杂的数学运算,这在处理超越常规数据类型限制的计算时非常有用。在实际编程中,根据具体需求,还可以结合...
标题中的“大数相加jar包(一个简单算法的实现)”指的是这个压缩包中包含了一个用Java语言编写的程序,它的主要功能是处理大数的相加操作。在计算机科学中,大数运算通常涉及到处理超过普通整型或浮点型所能表示...
java用数组写的大数类,实现大数类的加法···
在Java中,虽然有内置的`java.math.BigInteger`类可以方便地处理大数运算,但为了学习和理解大数操作的原理,我们可以自行实现一个大数类。这个项目的目标就是创建一个自定义的大数类,实现基本的大数加法和减法功能...
实现多组输入的大数加减问题: import java.math.*; import java.util.*; public class Bignum { public static void main(String[] args) { BigInteger bigNumOne; BigInteger bigNumTwo; Scanner in = ...
本文将深入探讨如何通过字符串来存储和处理大数,并以"大数相加.exe代码及思路.rar"这个压缩包中的示例为线索,详细解释大数相加的实现方法。 首先,我们要理解为什么需要使用字符串来存储大数。在大多数编程语言中...
Java编程实现两个大数相加代码示例 在Java编程中,实现两个大数相加是一项常见的操作,特别是在高精度计算中。通常情况下,实现大数运算是通过BigInteger和BigDecimal两种方法。这两种方法分别表示不可变的任意精度...
### Java实验大数相加知识点总结 #### 一、实验目的 本次实验旨在通过一系列具体的编程任务,加深学生对Java语言的理解与应用能力。具体包括: - 进一步熟悉Java的基本语法及其内置方法。 - 加强对Java程序结构的...
实现2个80位左右的大数相加,暂时不支持负数,只支持正整数。
而`BigMulti.java`文件的名字暗示它可能专注于大数的乘法操作,可能包括一个自定义的乘法算法实现或者封装了`BigInteger`的`multiply`方法。 在实际应用中,`BigInteger`经常用于金融计算、密码学(如RSA加密算法)...
在Java中,我们可以使用`BigInteger`类(位于`java.math`包)来处理大数,但这里提到的是通过数组实现大数运算,这是一种基本的实现方式,有助于理解大数运算的底层逻辑。 2. **数组存储大数**: 每个数组元素代表...
两个大数相加时,可以类似小学的竖式加法,逐位相加并考虑进位。这里需要遍历两个数组,从低位到高位进行加法运算: 1. 初始化一个新的数组用于存放结果。 2. 初始化进位值为0。 3. 遍历两个数组,对于对应位上的...
在Java编程语言中,处理大数(大数据量的整数)加法时,通常会使用`java.math.BigDecimal`类。这个类提供了精确的浮点数运算,特别适合于需要高精度计算的情况,如金融计算或者复杂的数学运算。下面将详细讨论`...
本篇文章将详细探讨大数相加的算法,特别是针对题目中提到的“两个有几十位的数字相加”的情况。 首先,我们要理解基础的加法原理。对于两个十进制数的加法,我们可以采用列竖式的方法,逐位相加,同时考虑进位。这...
本项目实现了一个大数加减乘的类,结合链表数据结构来存储和处理这些大数。 首先,我们来讨论大数的基本概念。在计算机中,常规的数据类型如int、long等都有其最大值和最小值限制,例如在Java中,int的最大值为2^31...
Java作为一种广泛应用的编程语言,提供了处理大数的功能,主要通过`java.math`包中的`BigInteger`类来实现。本篇将详细介绍如何使用Java进行大数的加、减、乘、除以及开方运算。 首先,`BigInteger`类是Java标准库...
正如我们在 Java 中处理大数运算时,需要使用 BigInteger 类来实现,这是因为 Java 的基本数据类型无法存储非常大的数字。BigInteger 类提供了几个重要的方法来进行大数运算,包括加、减、乘、除和取余等。 在了解 ...