`
BabyDuncan
  • 浏览: 585672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大数相加的java实现

    博客分类:
  • J2SE
阅读更多
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大数相加代码

    java实现大数相加,在不使用BigInteger工具的前提下实现大数相加

    大数相乘算法,java代码,包含独立大数相加算法

    大数相乘算法,java代码,包含独立大数相加算法 其中bigNumberPlus(String s1,String s2)为大数相加方法 bigNumberMultiply(String s1,String s2)为大数相乘方法

    大数相加 java

    本篇文章将详细讲解如何在Java中实现大数相加,同时考虑异常处理和代码的可拓展性。 首先,Java标准库提供了一个名为`BigInteger`的类,用于处理任意精度的大整数。但是,为了理解基本的算法和提升编程能力,我们...

    java大数相加

    以上就是使用Java的`BigInteger`类实现大数相加的方法。通过这个类,我们可以处理任意大小的整数,并进行复杂的数学运算,这在处理超越常规数据类型限制的计算时非常有用。在实际编程中,根据具体需求,还可以结合...

    大数相加jar包(一个简单算法的实现)

    标题中的“大数相加jar包(一个简单算法的实现)”指的是这个压缩包中包含了一个用Java语言编写的程序,它的主要功能是处理大数的相加操作。在计算机科学中,大数运算通常涉及到处理超过普通整型或浮点型所能表示...

    java大数类用数组实现大数的加法···

    java用数组写的大数类,实现大数类的加法···

    Java 实现大数类

    在Java中,虽然有内置的`java.math.BigInteger`类可以方便地处理大数运算,但为了学习和理解大数操作的原理,我们可以自行实现一个大数类。这个项目的目标就是创建一个自定义的大数类,实现基本的大数加法和减法功能...

    Java实现大数相加问题

     实现多组输入的大数加减问题: import java.math.*; import java.util.*; public class Bignum { public static void main(String[] args) { BigInteger bigNumOne; BigInteger bigNumTwo; Scanner in = ...

    大数相加.exe代码及思路.rar

    本文将深入探讨如何通过字符串来存储和处理大数,并以"大数相加.exe代码及思路.rar"这个压缩包中的示例为线索,详细解释大数相加的实现方法。 首先,我们要理解为什么需要使用字符串来存储大数。在大多数编程语言中...

    java编程实现两个大数相加代码示例

    Java编程实现两个大数相加代码示例 在Java编程中,实现两个大数相加是一项常见的操作,特别是在高精度计算中。通常情况下,实现大数运算是通过BigInteger和BigDecimal两种方法。这两种方法分别表示不可变的任意精度...

    java实验大数相加.doc

    ### Java实验大数相加知识点总结 #### 一、实验目的 本次实验旨在通过一系列具体的编程任务,加深学生对Java语言的理解与应用能力。具体包括: - 进一步熟悉Java的基本语法及其内置方法。 - 加强对Java程序结构的...

    实现2个大数(80位左右)相加

    实现2个80位左右的大数相加,暂时不支持负数,只支持正整数。

    JAVA大数加法与乘法

    而`BigMulti.java`文件的名字暗示它可能专注于大数的乘法操作,可能包括一个自定义的乘法算法实现或者封装了`BigInteger`的`multiply`方法。 在实际应用中,`BigInteger`经常用于金融计算、密码学(如RSA加密算法)...

    java 数组实现大数加减乘除运算

    在Java中,我们可以使用`BigInteger`类(位于`java.math`包)来处理大数,但这里提到的是通过数组实现大数运算,这是一种基本的实现方式,有助于理解大数运算的底层逻辑。 2. **数组存储大数**: 每个数组元素代表...

    java大数(以数组形式保存整数,实现整数加减)

    两个大数相加时,可以类似小学的竖式加法,逐位相加并考虑进位。这里需要遍历两个数组,从低位到高位进行加法运算: 1. 初始化一个新的数组用于存放结果。 2. 初始化进位值为0。 3. 遍历两个数组,对于对应位上的...

    java实现大数加法(BigDecimal)的实例代码

    在Java编程语言中,处理大数(大数据量的整数)加法时,通常会使用`java.math.BigDecimal`类。这个类提供了精确的浮点数运算,特别适合于需要高精度计算的情况,如金融计算或者复杂的数学运算。下面将详细讨论`...

    大数加减,两个有几十位的数字相加想减

    本篇文章将详细探讨大数相加的算法,特别是针对题目中提到的“两个有几十位的数字相加”的情况。 首先,我们要理解基础的加法原理。对于两个十进制数的加法,我们可以采用列竖式的方法,逐位相加,同时考虑进位。这...

    大数加减乘类的实现

    本项目实现了一个大数加减乘的类,结合链表数据结构来存储和处理这些大数。 首先,我们来讨论大数的基本概念。在计算机中,常规的数据类型如int、long等都有其最大值和最小值限制,例如在Java中,int的最大值为2^31...

    大数的 加 减 乘 除 开方运算Java版

    Java作为一种广泛应用的编程语言,提供了处理大数的功能,主要通过`java.math`包中的`BigInteger`类来实现。本篇将详细介绍如何使用Java进行大数的加、减、乘、除以及开方运算。 首先,`BigInteger`类是Java标准库...

    java练习_大数运算_BigInteger.pdf

    正如我们在 Java 中处理大数运算时,需要使用 BigInteger 类来实现,这是因为 Java 的基本数据类型无法存储非常大的数字。BigInteger 类提供了几个重要的方法来进行大数运算,包括加、减、乘、除和取余等。 在了解 ...

Global site tag (gtag.js) - Google Analytics