-1

这是我的代码的一部分。在带有 for 循环的部分:我一生都无法弄清楚为什么它只循环一次。我已经盯着这个看了好几个小时,想知道为什么它只做一次。parse 等于 3,所以如果我的逻辑是正确的,它应该执行 3 次。谢谢。

public BigInt multiplcationHelper(BigInt B1,BigInt B2) {
    int size1 = this.num.size(), size2 = B2.num.size();// sizes of B1 and B2
    BigInt result = new BigInt();
    int parse = Integer.parseInt(B2.toString());
    int farse = Integer.parseInt(B1.toString());

    // result's num initial capacity of one more than B1's num and fill with null objects.
    result.num = new ArrayList (Collections.nCopies( size1+1, null ));

    //Both B1 and B2 are positive
    //if (B1.isPositive && B2.isPositive){ 
    for (int i = 0; i<parse; i++) {
        B1.add(B1);     
    //}
    }
    //result = B1;
    return B1;
}
4

2 回答 2

2

我认为你感到困惑的是它B1.add(B1);实际上并没有 double B1。你可能想要B1 = B1.add(B1);. 正如http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html中的 API 所述,add()只返回一个新的BigInteger; 它不会影响调用它的 BigInteger。

你真的需要为此使用 BigInteger 吗?值 3 应该只是一个int(BigInteger 是严重的矫枉过正)。

于 2013-10-05T21:35:24.577 回答
0

你的第一行是

int size1 = this.num.size(), size2 = B2.num.size();// sizes of B1 and B2

size1不是B1大小。尝试:

int size1 = B1.num.size(), size2 = B2.num.size();// sizes of B1 and B2
于 2013-10-05T21:54:43.773 回答