for循环只进行一次

时间:2013-10-05 21:32:10

标签: java loops for-loop integer

这是我的代码的一部分。在带有for循环的部分:          我不能为我的生活弄清楚为什么它只是循环一次。我一直在盯着这几个小时,想知道为什么它只做了一次。解析等于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;
}

2 个答案:

答案 0 :(得分:2)

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

你真的需要使用BigInteger吗?值3应该只是int(BigInteger严重过度杀伤)。

答案 1 :(得分: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