java—将两个整数数组添加到一个整数数组中

ujv3wf0j  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(487)

我想取两个整数数组并将它们相加,但我在携带位时遇到了一些困难。

public static int [] add(int [] a, int [] b) 
{
    int col = 0;
    int carry = 0;           
    int[] totalArray = new int[MAX_DIGITS + 1];           
    for(int i = MAX_DIGITS - 1; i > 0; i--) {
        col = a[i] + b[i] + carry; 
        if(col >= 10) {
            carry = col / 10; 
            totalArray[i] %= 10; 
        } else {
            totalArray[i] = col;
            carry = 0; 
        }
    }
    totalArray[0] = carry; 
    return totalArray;      
}

上述代码正确添加204+435,但未能正确添加22+3122+12(输出65)。我编写了其他方法来确保数组中的所有数字都被正确索引,并测试了这些方法。因为它对204+435有效,但对另一个无效,我看不出是什么绊倒了我。我不想使用biginteger类-在有人建议我使用之前。
给定int[]a[000000000000000000000999]和int[]b[000000000000000000000483]当前add(a,b)返回[0000000000000001000]

0tdrvxhp

0tdrvxhp1#

这很管用。只需确保所有数组只占用位置 1 thru MAX_DIGITS-1 实际值。这允许携带到 totalArray[0] .

static int MAX_DIGITS = 6;

int[] a = {0,0,0,0,2,2};
int [] b = {0,0,3,1,2,2};
int [] c = {0,0,0,0,1,2};

int[] part1 = add(a,b);
int [] total = add(part1, c);
System.out.println(Arrays.toString(total));

印刷品

[0, 0, 3, 1, 5, 6]

我所做的就是缩小 totalArray 数组到 MAX_DIGITS 然后改变主意 i > 0i >= 0 在循环中。
确保 index 00 在所有数组中。
剩下的是你的密码。

public static int[] add(int[] a, int[] b) {
    int col = 0;
    int carry = 0;
    int[] totalArray = new int[MAX_DIGITS];
    for (int i = MAX_DIGITS-1; i >= 0; i--) {
        col = a[i] + b[i] + carry;
        if (col >= 10) {
            carry = col / 10;
            totalArray[i] %= 10;
        } else {
            totalArray[i] = col;
            carry = 0;
        }
    }
    totalArray[0] = carry;
    return totalArray;
}

相关问题