You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组求和进位问题:索引0无法完整显示最终进位数值

解决数组相加最后一位进位保留完整数值的问题

嘿,我明白你遇到的问题了——当处理到最高位(索引0)的时候,现在的逻辑还是会把超过10的部分当成进位丢掉,只留个位,但你希望这里直接显示完整的总和,不管是不是超过10对吧?

问题出在哪?

你当前的代码里,不管是不是最后一位,都会把进位标记toggle设为sum >= carry,而且处理的时候都只保留了个位(或者加进位后的个位)。但对于最高位来说,我们不需要再传递进位了,应该直接把总和加上之前的进位的完整值放进去,不用再拆分。

怎么修改?

我们可以把循环拆成两部分:先处理除最高位之外的所有位置,正常传递进位;然后单独处理最高位,直接保留完整的总和(包括可能的进位),不再拆分。

修改后的完整代码

import java.util.Arrays;
import java.util.Scanner;

public class SumArray {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int size = 2;
        int[] arr1 = new int[size];
        int[] arr2 = new int[size];
        int[] result = new int[2];
        
        System.out.println("Array 1 : ");
        for(int i = 0; i < arr1.length; i++){
            System.out.print("Position : " + i + " = " );
            arr1[i] = input.nextInt();
        }
        System.out.println(Arrays.toString(arr1));
        
        System.out.println("Array 2 : ");
        for(int i = 0; i < arr2.length; i++){
            System.out.print("Position : " + i + " = " );
            arr2[i] = input.nextInt();
        }
        System.out.println(Arrays.toString(arr2));
        
        //carry sum
        boolean hasCarry = false;
        // 先处理除最高位(i=0)之外的所有位,正常传递进位
        for(int i = result.length - 1; i > 0; i--){
            int sum = arr1[i] + arr2[i];
            if (hasCarry) {
                sum += 1;
            }
            if (sum >= 10) {
                result[i] = sum - 10;
                hasCarry = true;
            } else {
                result[i] = sum;
                hasCarry = false;
            }
        }
        // 单独处理最高位,直接保留完整总和(含进位)
        int finalSum = arr1[0] + arr2[0];
        if (hasCarry) {
            finalSum += 1;
        }
        result[0] = finalSum;
        
        System.out.println("Final Array : " + Arrays.toString(result));
    }
}

关键修改点说明

  • 把原来的toggle改名为hasCarry,语义更清晰
  • 循环只处理从最后一位到索引1的位置,维持正常的进位传递逻辑
  • 单独处理索引0的位置:直接计算总和加上之前的进位,把完整数值赋值给result[0],不再拆分进位

比如你提到的场景:5+6=11加上进位1等于12,现在result[0]就会直接存储12,而不是只保留个位2了。

内容的提问来源于stack exchange,提问作者CostZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:13:09