它应该打印低于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);
}
}
}
答案 0 :(得分:0)
添加如下声明:
if (state == true){
System.out.println(Number);
}
state = true; //reset the state variable
这里我们将状态变量重置为true以进行下一次迭代。
答案 1 :(得分:0)
你必须在每次调用开始时将布尔状态重置为true,否则除了第一次调用(当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);
}
}
答案 2 :(得分:0)
好吧,你没有在因子()方法中将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);
}
}