这是我的代码的一部分。在带有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;
}
答案 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