我的简单 Java 程序有什么问题?

What's wrong with my simple Java program?

它只是应该打印 100 以下的素数,但它只得到数字“3”作为输出。我才刚刚开始学习 Java 所以这一切对我来说都是正确的。

public class ClassesAndObjects {
    public static void main(String[] args) {        
        Prime n = new Prime();
        for (int i = 3; i < 100; i++){
            n.Number = i;
            n.factors();
        }
    }

}

class Prime{
    long Number;
    long fact;
    boolean state = true;

    void factors(){
        for (fact = 2; fact < Number; fact++){
            if (fact != Number){
                if (Number % fact == 0){
                    state = false;
                    break;
                }
            }
        }
        if (state == true){
            System.out.println(Number);
        }

    }
}

添加这样的语句:

    if (state == true){
        System.out.println(Number);
    }

    state = true; //reset the state variable

这里我们为下一次迭代将状态变量重置为 true。

您必须在每次调用开始时将布尔状态重置为 true,否则它始终为 false,除了第一次调用(当 i =3 时)

void factors(){

    state = true;
    for (fact = 2; fact < Number; fact++){
        if (fact != Number){
            if (Number % fact == 0){
                state = false;
                break;
            }
        }
    }
    if (state == true){
        System.out.println(Number);
    }

}

好吧,您的 factor() 方法中没有将 state = true 作为默认值。所以当它第一次运行 state = false 时(发生在 Number = 4 时),那么它总是 false。只需在代码中添加粗体行即可。

void factors(){
    **boolean state = true;**
    for (fact = 2; fact < Number; fact++){
        if (fact != Number){
            if (Number % fact == 0){
                state = false;
                break;
            }
        }
    }
    if (state == true){
        System.out.println(Number);
    }

}