在这段代码中,为什么4%2不等于0?

时间:2015-11-15 23:06:22

标签: java

我花了很多时间试图弄清楚为什么一行代码无法正常运行。我试图激活'这段代码中的以下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);

        }

    }

2 个答案:

答案 0 :(得分:3)

if (isPrimeNumber = true) {

这将true分配给isPrimeNumber,然后将其评估为布尔值(由于您刚刚将其指定为布尔值,因此将始终为真)

使用==代替(或者只是将其遗漏,因为booleanVariable == truebooleanVariable相同,并且您不会冒这种错误的风险。)< / p>

答案 1 :(得分:0)

更改

if (isPrimeNumber = true) 

if (isPrimeNumber) 

=适用于assignment,而非equality