7-2 jmu-Java-02基本语法-07-大整数相加 (9 分)

在这里插入图片描述

import java.math.BigDecimal;
import java.util.Scanner;
public class pta2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n;
        BigDecimal bigDecimal,sum = BigDecimal.valueOf(0L);
        while(sc.hasNext()){
            n = sc.nextLine();
            if("e".equals(n)||"E".equals(n)){
                break;
            }
            bigDecimal = new BigDecimal(n);
            sum = sum.add(bigDecimal);
        }
        System.out.println(sum);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 好的,下面是回复: jmu-java-02基本语法-07-整数相加是一道Java编程题目,要求实现两个大整数相加功能。大整数是指超过Java基本数据类型范围的整数,需要使用字符串来表示。这道题目主要考察Java字符串的操作和算法思维能力。 ### 回答2: 本篇题解是针对jmu-java-02基本语法-07-整数相加的题目进行解答。该题目的主要目的是通过Java程序实现大整数相加的功能,其中大整数为两个字符串类型的数字。 首先,大整数相加的思路是通过模拟手算的方式进行,即逐位相加,考虑进位的情况。具体地,从低位开始,逐个相加,并记录进位,将进位值加到下一位的计算中。当计算结束后,如果还有进位,则需要将进位加到最高位上。 其次,在Java程序中实现大整数相加需要注意以下几个方面: 1. 需要将输入的字符串转换成字符数组,并取出每个字符对应的数字。 2. 由于两个输入的大整数可能位数不同,因此需要在相加之前在短的大整数前面补0,使其与长的大整数位数相同。 3. 在进行逐位相加时,需要记录进位值,并将进位值加在下一位的计算中。 4. 最终计算结果需要倒序存储,并转换为字符串输出。 最后,我设计了一段Java程序来实现大整数相加的功能: ``` import java.util.Scanner; public class BigNumAdd { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str1 = in.nextLine(); String str2 = in.nextLine(); int len1 = str1.length(); int len2 = str2.length(); int[] num1 = new int[len1]; int[] num2 = new int[len2]; for (int i = 0; i < len1; i++) { num1[i] = str1.charAt(len1 - 1 - i) - '0'; } for (int i = 0; i < len2; i++) { num2[i] = str2.charAt(len2 - 1 - i) - '0'; } int len = Math.max(len1, len2); int[] res = new int[len + 1]; int carry = 0; for (int i = 0; i < len; i++) { int temp = num1[i] + num2[i] + carry; res[i] = temp % 10; carry = temp / 10; } if (carry > 0) { res[len] = carry; } StringBuilder sb = new StringBuilder(); for (int i = len; i >= 0; i--) { sb.append(res[i]); } System.out.println(sb.toString()); } } ``` 该程序首先输入两个字符串类型的大整数,并将它们转换成字符数组,并将字符转换成数字。然后,通过比较两个大整数的位数,将位数短的那个大整数前面补0,使它们的位数相同。接下来,通过逐位相加的方式计算两个大整数的和,并记录进位值,将进位值加在下一位计算中。最后,将计算结果倒序存储,并转换成字符串输出。 总之,本篇题解介绍了如何通过Java程序实现大整数相加的功能,并介绍了一种逐位相加的计算方式。希望我的回答能够帮助大家理解和掌握该题目的解法。 ### 回答3: 大整数相加是一种经常出现在程序设计中的问题,它的解决方法可以归结为两种,一种是使用字符串进行处理,另一种是使用数组来进行处理。 使用字符串进行处理时,我们需要把大整数转换为字符串,然后一位一位地进行相加,并且需要考虑进位的情况。如果两个数的位数不一样的话,我们可以在较短的字符串前面补零,使得它们的位数相同。 使用数组进行处理时,我们可以把大整数分解成若干个数字,每个数字都表示这个数的某一位,然后一位一位地进行相加,并且需要考虑进位的情况。 在大整数相加的实现过程中,需要注意几个问题: 1、两个大整数的位数可能不一样,在相加之前需要把它们的位数补齐。 2、在相加的过程中可能会产生进位,在相应的位上需要加上进位。 3、相加完成之后,需要把结果反转过来,并且去掉前导的0。 对于这道题目而言,我们可以使用字符串进行处理。我们首先需要把两个大整数转换成字符串,并且把它们的位数补齐。然后从低位开始相加,并且在相应的位上加上进位。最后,把结果反转过来,并且去掉前导的0,就得到了相加的结果。 在实现过程中,需要注意一些细节问题,例如字符串的下标问题、进位的处理问题等等。此外,还需要注意特殊情况的处理,例如两个数都为0的情况。 总之,大整数相加是一道比较常见的算法问题,需要熟练掌握。如果我们掌握了这一技能,就可以更好地处理大数字的计算问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ASSIC clr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值