楼主: meshion
59 0

[作业] pta题目 java大整数相加 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-5-22
最后登录
2018-5-22

楼主
meshion 发表于 2025-12-8 16:18:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

7-8 jmu-Java-02 基本语法 - 07 - 大整数相加

分数:4

作者:郑如滨

单位:集美大学

题目描述:

给定多个大整数,要求对这些数值进行累加运算。由于数值可能超出基本数据类型的表示范围,需采用适当的方法处理大数运算。

输入说明:

多行输入,每行包含一个字符串形式的大整数。持续读取输入,直到某一行的内容为单个字符 'e' 或 'E' 时停止输入。

输入示例:

42846280183517070527831839425882145521227251250327
55121603546981200581762165212827652751691296897789
e

输出示例:

97967883730498271109594004638709798272918548148116
import java.util.*;

public class Main {
       public static String add(String num1, String num2) {
        // 将字符串转换为字符数组
        char[] arr1 = num1.toCharArray();
        char[] arr2 = num2.toCharArray();
        
        // 确定结果数组的最大长度(两个数的最大长度 + 1,用于处理最高位进位)
        int maxLength = Math.max(arr1.length, arr2.length) + 1;
        int[] resultArr = new int[maxLength];
        
        // 从右往左遍历两个数字数组
        int i = arr1.length - 1;
        int j = arr2.length - 1;
        int k = maxLength - 1;
        
        // 进位标志
        int carry = 0;
        
        // 当还有数字未处理或还有进位时继续循环
        while (i >= 0 || j >= 0 || carry > 0) {
            // 获取当前位的数字,若已遍历完则取0
            int digit1 = (i >= 0) ? arr1[i--] - '0' : 0;
            int digit2 = (j >= 0) ? arr2[j--] - '0' : 0;
            
            // 计算当前位的和(包括进位)
            int sum = digit1 + digit2 + carry;
            
            // 更新进位
            carry = sum / 10;
            
            // 将当前位的数字(sum % 10)存入结果数组
            resultArr[k--] = sum % 10;
        }
        
        // 将结果数组转换为字符串
        StringBuilder result = new StringBuilder();
        
        // 跳过前导零因为我们开始时预留了一位,所以永远比位数最大的还大一位,此刻判断如0333,则直接从下标1开始333
        int startIndex = (resultArr[0] == 0) ? 1 : 0;
        
        // 构建结果字符串
        for (int m = startIndex; m < maxLength; m++) {
            result.append(resultArr[m]);
        }
        
        return result.toString();
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String numbers[] = new String[999];
        int count = 0;
        
        // 读取输入直到遇到'e'或'E'
        while (true) {
            String input = scanner.nextLine().trim();
            
            // 检查是否为退出标志
            if ("e".equalsIgnoreCase(input)) {
                break;
            }
            numbers[count++] = input;
        }
        
        // 计算所有大整数的和
        String sum = "0";
        // 只遍历实际输入的元素(0到count-1)
        for (int i = 0; i < count; i++) {
            sum = add(sum, numbers[i]);
        }
        
        // 输出结果
        System.out.println(sum);
    }
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Java PTA jav tostring scanner

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 23:53