为什么会出现死循环?关于 BigInteger.remainder()
Why there is infinite loop? about BigInteger.remainder()
public class Ex14_11 {
public static void main(String[] args){
long b = Long.MAX_VALUE;
BigInteger a = new BigInteger(Long.toString(b));
int count = 0;
BigInteger c = new BigInteger("5");
BigInteger d = new BigInteger("6");
BigInteger e = new BigInteger("0");
while( count < 10 ){
a.add(BigInteger.ONE);
if(a.remainder(d) == new BigInteger("0") || a.remainder(c) == new BigInteger("0")){
System.out.print(a);
count++;
}
}
}
}
我需要找到大于 Long.MAX_VALUE 的前十个数字。所有数字都应该能整除5或6。
a.remainder(d) == new BigInteger("0")
您不能使用 ==
来比较 BigInteger
。使用 a.remainder(d).equals(new BigInteger("0"))
(第二次比较也类似)。请注意 a == new Foo(...)
在 Java 语言中 总是 错误。
此外,您必须写
a = a.add(BigInteger.ONE);
...因为你现在写的就像
a + 1;
...实际上对 a
.
没有任何作用
public class Ex14_11 {
public static void main(String[] args){
long b = Long.MAX_VALUE;
BigInteger a = new BigInteger(Long.toString(b));
int count = 0;
BigInteger c = new BigInteger("5");
BigInteger d = new BigInteger("6");
BigInteger e = new BigInteger("0");
while( count < 10 ){
a.add(BigInteger.ONE);
if(a.remainder(d) == new BigInteger("0") || a.remainder(c) == new BigInteger("0")){
System.out.print(a);
count++;
}
}
}
} 我需要找到大于 Long.MAX_VALUE 的前十个数字。所有数字都应该能整除5或6。
a.remainder(d) == new BigInteger("0")
您不能使用 ==
来比较 BigInteger
。使用 a.remainder(d).equals(new BigInteger("0"))
(第二次比较也类似)。请注意 a == new Foo(...)
在 Java 语言中 总是 错误。
此外,您必须写
a = a.add(BigInteger.ONE);
...因为你现在写的就像
a + 1;
...实际上对 a
.