簡體   English   中英

將兩個整數數組添加到一個整數數組中

[英]Add Two Integer Arrays into One Integer Array

我想取兩個整數數組並將它們加在一起,但是我在攜帶位方面遇到了一些困難。

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 [0000000000000000000000999] 和 int[]b [00000000000000000000000483] 當前 add(a,b) 返回 [00000000000000000000010000000001000000000000000000000000483]

這工作得很好。 只需確保您的所有數組僅占用具有實際值的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 > 0更改為i >= 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM