[英]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 0
為0
。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.