Java system.out.print不';运行代码时不显示?

Java system.out.print不';运行代码时不显示?,java,Java,每当我运行Java程序时,我都会偶然发现一个奇怪的错误 代码如下 interface meth{ int prime(int x); int div3(int x); int div8(int x); int divall(int x); } class Cal implements meth{ int x; int z; public int prime(int x){ return (x/x)*(x/1); } public int div3(int x){ r

每当我运行Java程序时,我都会偶然发现一个奇怪的错误

代码如下

interface meth{
int prime(int x);
int div3(int x);
int div8(int x);
int divall(int x);
}

class Cal implements meth{
int x; 
int z;
 public int prime(int x){
     return (x/x)*(x/1);
 }
 public int div3(int x){
     return x%3;
 }
 public int div8(int x){
     return x%8;
 }
 public int divall(int x){
     if((x%3)==0){
         if((x%8)==0){ z=2;}
     }
     else {z=1;}
     return z;
 }

}
public class Math {
public static void main(String[] args) {
    Cal val = new Cal();

    System.out.println("This program will output " +
            "numbers that are: Prime, divisible " +
            "by 3, and divisible by 8, but not " +
            "divisible by both 3 and 8");
    for(int i=1; i==2500; i++)
        if(val.prime(i)==i){
            System.out.println(i);
        }
        else if(val.divall(i)==2){
            break;
        }
        else if(val.div3(i)==0){
            System.out.println(i + "");
        }
        else if(val.div8(i)==0){
            System.out.println(i);
        }
}

}
它编译得很好。但是当它运行时,它不会只显示素数、可被3整除和可被8整除的数字,而是只显示第一个system.out.println,说明程序的用途。我们将非常感谢您的任何帮助

另外,我知道使用接口和单独的类可能有点过分。我只是在实践课堂上本章教给我的新思想

for(int i=1; i==2500; i++)

for(int i=1;i<2500;i++)

for循环中的所有内容都永远不会运行,因为for循环的条件不可能满足:i将为1,并且对于任何迭代,它都不会==到2500。

这是因为
for
循环使用以下格式:

for(initialization; boolean_expression; update){
  //do this
}
问题是,循环的
布尔表达式部分永远不会为真。你正在做:

for(int i=1; i==2500; i++)
for循环从初始化
i=1
开始
i
不能同时为
2500
1
。你应该做的是:

for(int i = 1; i <= 2500; i++){
  //do something here
}

查看你的
for
循环的条件,然后检查你的prime方法,因为它有点奇怪,即使你让for循环运行,它也不起作用。
for
中的第二个表达式告诉程序循环何时继续,而不是何时停止。谢谢大家的快速输入。这很有帮助。我因为错过了这么简单的事情而感到很愚蠢。这些数字现在正在显示。虽然,正如满是鳗鱼的气垫船所说,我的素数方法不起作用。再次感谢您的支持!
for(int i = 1; i <= 2500; i++){
  //do something here
}
for(int i = 1; i <= 2500; i++){
    if(val.prime(i)==i){
        System.out.println(i);
    }
    else if(val.divall(i)==2){
        break;
    }
    else if(val.div3(i)==0){
        System.out.println(i + "");
    }
    else if(val.div8(i)==0){
        System.out.println(i);
    }
}