• Java实现大数加法运算的几种方法


    大数加法

    思路一:定义String变量str1和str2分别存储输入的两个大数,定义num1[]和num2[]两个int型数组,将两个字符串分别逐个字符逆序存入数组,定义sum[]数组存放求和结果,使用循环两个数组中的元素逐位相加,并判断是否进位,最后逆序输出数组sum[]中的每个元素。

     1 import java.util.Scanner;
     2 
     3 public class largenumberOperationAdd {
     4     public static void main(String[] args){
     5         Scanner sc=new Scanner(System.in);
     6         System.out.println("请输入第一个高位整数:");
     7         String str1=sc.next();
     8         System.out.println("请输入第二个高位整数:");
     9         String str2=sc.next();
    10         int[] num1=new int[str1.length()];  //num1[]存储第一个大数
    11         int[] num2=new int[str2.length()];  //num2[]存储第二个大数
    12         int len=1+Math.max(str1.length(),str2.length());//找到两个大数中位数更高的一个并+1,设置为求和数组的长度
    13         int[] sum=new int[len];             //sum[]存储两大数之和
    14         for (int a=0;a<str1.length();a++){
    15             //将str1数字逐个倒序放入数组num1[]
    16             num1[str1.length()-a-1]=Integer.parseInt(str1.substring(a,a+1));
    17         }
    18         for (int b=0;b<str2.length();b++){
    19             //将str2数字逐个倒序放入数组num2[]
    20             num2[str2.length()-b-1]=Integer.parseInt(str2.substring(b,b+1));
    21         }
    22         int overflow=0;
    23         for (int i=0;i<len-1;i++){
    24             //逐位相加,满10进1
    25             sum[i]=num2[i]+num1[i]+overflow;
    26             if (sum[i]>=10){
    27                 sum[i]=sum[i]%10;
    28                 overflow=1;
    29             }else{
    30                 overflow=0;
    31             }
    32         }
    33         for (int j=len-1;j>=0;j--){
    34             System.out.print(sum[j]);
    35         }
    36     }
    37 }
    largenumberOperationAdd

     思路二,使用栈结构实现将输入的数字依次存进栈中(栈有先进后出的特点,所以先输入的高位上的数字会被存在栈的底层),在计算和的时候从两个栈中依次取出数据相加存入新的栈中(计算时在栈顶的是个位,然后是十位,以此类推,存进新的栈时在栈底的是个位,然后是十位,以此类推),最后将存放计算结果的栈中元素自顶向底取出打印,这种方法效率较高,时间复杂度低,但是空间复杂度很大,需要占用较多的空间资源。

  • 相关阅读:
    spring事务在web环境中失效的问题
    oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )
    查询Oracle正在执行的sql语句及kill被锁的表
    oracle last_value使用过程中的一个细节
    oracle查询历史执行语句
    前端PHP入门-020-重点日期函数之获取时期时间信息函数
    前端PHP入门-019-内置函数之数学函数-很重要
    前端PHP入门-016-静态变量
    前端PHP入门-017-系统内置函数-会查阅API
    ajax跨域调用webservice例子
  • 原文地址:https://www.cnblogs.com/edward-life/p/10502167.html
Copyright © 2020-2023  润新知