如何使用数组将两个具有不同位数的整数加在一起,而不会导致越界异常?
例如:500 + 99 每个数字都是数组的元素
这就是我现在正在做的事情:
int aIILength = infiniteInteger.length-1;
int bIILength = anInfiniteInteger.infiniteInteger.length-1;
for(int f = aIILength; f >0; f--){
int aTempNum = infiniteInteger[f];
int bTempNum = anInfiniteInteger.infiniteInteger[f];
result = aTempNum + bTempNum;
//array representation of sum
tempArray[f] = result;
}
答案 0 :(得分:1)
让循环中的计数器从1开始,然后用它来访问每个数组末尾的数字。
你需要一个进位来保持添加每组数字的溢出。
循环,直到两个数组中的数字都用尽,并且进位为零。
访问数组中的数字时检查范围,当数字用完时使用零。
int aIILength = infiniteInteger.length;
int bIILength = anInfiniteInteger.infiniteInteger.length;
int carry = 0;
for(int f = 1; f <= aIILength || f <= bIILength || carry > 0; f++){
int aTempNum;
if (f <= aIILength) {
aTempNum = infiniteInteger[aIILength - f];
} else {
aTempNum = 0;
}
int bTempNum;
if (f <= bIILength) {
bTempNum = anInfiniteInteger.infiniteInteger[bIILength - f];
} else {
bTempNum = 0;
}
result = aTempNum + bTempNum + carry;
tempArray[tempArray.length - f] = result % 10;
carry = result / 10;
}
注意:使tempArray
比两个操作数数组都长,这样它就有可能进位到下一个数字。