基本上,整数数组(类BigInteger的指定数字)用于表示单个大整数。到目前为止,我已经解决了如何添加 - 携带两个数组并减去携带,但乘法给我带来了问题。以下是我写的代码:
public BigInteger multiply(BigInteger n) {
int carry = 0;
for(int i = n.digits.length - 1; i >= 0;i--) {
for(int j = this.digits.length - 1; i >= 0; i--) {
int val = (this.digits[i] * n.digits[j]) + carry;
this.digits[i] = val % 10;
carry = val / 10;
}
}//for
return this;
}
只要调用this
更大且参数n
是单个数字,此代码就可以正常工作。但是只要n
超过1位数,代码就会失败。我感到茫然,并且正在朝着正确的方向发展指导。
答案 0 :(得分:1)
替换
for(int j = this.digits.length - 1; i >= 0; i--) {
与
for(int j = this.digits.length - 1; j >= 0; j--) {
在迭代内循环时,您不想减少i
。做完这个修正后,你应该好好去。