用Java输出正确的素数

用Java输出正确的素数,java,primes,Java,Primes,我对目前正在执行的Java程序有一个小问题: public class PrimeNumbers { public static void computePrimeNumbers(boolean[] prime, int n) { for (int i = 2; i < n; i++) { if (prime[i] == true) { for (int j = 2; j < n; j++) {

我对目前正在执行的Java程序有一个小问题:

public class PrimeNumbers {

    public static void computePrimeNumbers(boolean[] prime, int n) {
        for (int i = 2; i < n; i++) {
            if (prime[i] == true) {
                for (int j = 2; j < n; j++) {
                    if ((j%i == 0) && (j != i)) {
                        prime[j] = false;
                        //System.out.println(j + " = " + prime[j]);
                    }
                }
            }
        }
    }

    public static void main(String[] args) {

        int n = 13;
        boolean[] prime = new boolean[n];

        prime[0] = false;
        prime[1] = false;

        for (int i = 2; i < n; i++) {
            prime[i] = true;
        }

        computePrimeNumbers(prime, n);

        for (int i = 0; i < n; i++) {
            System.out.println(i + " = " + prime[i]);   
        }
    }
}
公共类素数{
公共静态void computePrimeNumbers(布尔[]素数,int n){
for(int i=2;i
如果整数(i)是素数,程序应输出“true”,否则输出false。嵌套for循环中if语句中注释掉的代码片段为我提供了正确的布尔语句(即,它在运行时显示的整数不是素数),然而,main中的最后一个for循环似乎只是显示给prime数组的初始值——因此我假设ComputePrimeEnumbers的结果在某处被覆盖了


感谢您的帮助。

如果
条件使用赋值运算符而不是相等运算符,则
条件:

if (prime[i] = true) {  // should be if(prime[i] == true) or just if(prime[i])

prime[i]=true
将值
true
分配给数组元素,并且
if
条件将始终计算为true。

您是否尝试过遍历纸上的逻辑?使用老式的笔和键盘?
if(prime[i]=true)
你是在比较等式还是赋值?这通常有助于确保你对逻辑的假设是真的啊,一个经典的、鬼鬼祟祟的赋值啊,是的,我忘记了方法中if(prime[i]=true)语句中的额外=了。不管怎样,现在输出是正确的,你确定我们需要偶数==应该只要(prime[i])满足@回答错了,当然。但重点是指出这两个运营商之间的区别。
if (prime[i] == true) {

    for (int j = 2; j < n; j++) {
        if ((j % i == 0) && (j != i)) {
            prime[j] = false;
             System.out.println(j + " = " + prime[j]);
        }
    }
}
4 = false
6 = false
8 = false
10 = false
12 = false
6 = false
9 = false
12 = false
10 = false
0 = false
1 = false
2 = true
3 = true
4 = false
5 = true
6 = false
7 = true
8 = false
9 = false
10 = false
11 = true
12 = false