乘以表示整数的数组(类似于BigInteger)?

时间:2017-03-14 18:58:48

标签: java for-loop multiplication

基本上,整数数组(类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位数,代码就会失败。我感到茫然,并且正在朝着正确的方向发展指导。

1 个答案:

答案 0 :(得分:1)

替换

for(int j = this.digits.length - 1; i >= 0; i--) {

for(int j = this.digits.length - 1; j >= 0; j--) {

在迭代内循环时,您不想减少i。做完这个修正后,你应该好好去。