我花了很多时间试图弄清楚为什么一行代码无法正常运行。我试图激活'这段代码中的以下if
语句:
if (i%t == 0){
isPrimeNumber = false;
}
但是,当i%t
真正等于0时(例如,当i = 4且t = 2时),isPrimeNumber
的值永远不会更改为false。有人可以告诉我为什么会这样吗?我非常感谢能得到的任何帮助。
整个细分:
for (int i = 2; i < maximumRange; i++){
boolean isPrimeNumber = true;
for (int t = 2; t < i; t++) {
if (i%t == 0){
isPrimeNumber = false;
}
}
if (isPrimeNumber = true) {
primeNumbers.add(i);
}
}
答案 0 :(得分:3)
if (isPrimeNumber = true) {
这将true
分配给isPrimeNumber
,然后将其评估为布尔值(由于您刚刚将其指定为布尔值,因此将始终为真)
使用==
代替(或者只是将其遗漏,因为booleanVariable == true
与booleanVariable
相同,并且您不会冒这种错误的风险。)< / p>
答案 1 :(得分:0)
更改
if (isPrimeNumber = true)
到
if (isPrimeNumber)
=
适用于assignment
,而非equality
。