Java 为什么会有无限循环?关于BigInteger.rements() 公共类Ex14\u 11{ 公共静态void main(字符串[]args){ 长b=长最大值; BigInteger a=新的BigInteger(Long.toString(b)); 整数计数=0; BigInteger c=新的BigInteger(“5”); BigInteger d=新的BigInteger(“6”); BigInteger e=新的BigInteger(“0”); 同时(计数
} 我需要找到前十个大于Long.MAX_值的数字。所有数字都应该能够精确地除以5或6Java 为什么会有无限循环?关于BigInteger.rements() 公共类Ex14\u 11{ 公共静态void main(字符串[]args){ 长b=长最大值; BigInteger a=新的BigInteger(Long.toString(b)); 整数计数=0; BigInteger c=新的BigInteger(“5”); BigInteger d=新的BigInteger(“6”); BigInteger e=新的BigInteger(“0”); 同时(计数,java,loops,infinite-loop,biginteger,Java,Loops,Infinite Loop,Biginteger,} 我需要找到前十个大于Long.MAX_值的数字。所有数字都应该能够精确地除以5或6 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");
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++;
}
}
}
您不能使用==
来比较biginger
s。使用a.rements(d).equals(新的BigInteger(“0”))
(第二次比较也是如此)。请注意,a==newfoo(…)
在Java语言中总是false
此外,你必须写作
a.remainder(d) == new BigInteger("0")
…因为你现在写的是
a = a.add(BigInteger.ONE);
…实际上对
a
没有任何作用,可以添加BigInteger。零
是新的BigInteger(“0”)
的更好选择。
a + 1;