Java 为什么我可以用biginteger变量获取while条件的过程
当条件不等于1时,我想使while循环工作。 我想做些什么 虽然(biginteger不是1),但在我的代码中它不起作用Java 为什么我可以用biginteger变量获取while条件的过程,java,Java,当条件不等于1时,我想使while循环工作。 我想做些什么 虽然(biginteger不是1),但在我的代码中它不起作用 while (hasil.compareTo(BigInteger.valueOf(1)) == 0) { hasil = d.multiply(BigInteger.valueOf(b)).remainder(BigInteger.valueOf(m)); out.println(d + " x " + b + "mod " + m + "=" + has
while (hasil.compareTo(BigInteger.valueOf(1)) == 0) {
hasil = d.multiply(BigInteger.valueOf(b)).remainder(BigInteger.valueOf(m));
out.println(d + " x " + b + "mod " + m + "=" + hasil);
d = d.add(BigInteger.ONE);
}
上述代码段相当于以下内容:
while (BigInteger.ONE.equals(hasil)) // hasil == 1
要检查hasil
是否不等于BigInteger.ONE
,必须否定该条件:
while (!BigInteger.ONE.equals(hasil)) // hasil != 1
只需修改条件
while (hasil.compareTo(BigInteger.valueOf(1)) != 0)
正如@khelwood所提到的,当您寻找不等于1的值时,while条件中的逻辑是错误的,并且非常复杂,不容易发现。您可以检查语句体中的某些内容,并使用
break
退出循环,而不是在while
条件中执行单个组合语句
下面是一个示例,它使用一些语句来明确比较在做什么,以及循环何时退出
while (true) {
// do other things
int result = hasil.compareTo(BigInteger.valueOf(1));
boolean valuesAreEqual = (result == 0);
if (valuesAreEqual) {
break;
}
}
您的while条件正在测试您的变量是否等于1.0等于-1减1大,因此
!=0
。
while (true) {
// do other things
int result = hasil.compareTo(BigInteger.valueOf(1));
boolean valuesAreEqual = (result == 0);
if (valuesAreEqual) {
break;
}
}