我的简单 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);
}
}
它只是应该打印 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);
}
}