为什么会出现死循环?关于 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.

没有任何作用