我想取两个整数数组并将它们相加,但我在携带位时遇到了一些困难。
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]
1条答案
按热度按时间0tdrvxhp1#
这很管用。只需确保所有数组只占用位置
1 thru MAX_DIGITS-1
实际值。这允许携带到totalArray[0]
.印刷品
我所做的就是缩小
totalArray
数组到MAX_DIGITS
然后改变主意i > 0
至i >= 0
在循环中。确保
index 0
是0
在所有数组中。剩下的是你的密码。