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

时间:2014-05-17 01:30:33

标签: 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){
     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 来说明程序的用途。任何和所有帮助将不胜感激。

另外,我知道使用接口并且单独的类可能有点过分。我只是在练习本课程当前章节中教授的新思想。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

for(initialization; boolean_expression; update){
  //do this
}

问题是,循环的boolean_expression部分永远不会成立。你在做:

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

你的for循环从初始化i = 1开始。 i不能同时为25001。你应该做的是:

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

这将在i <= 2500时运行,并在每次循环时向i添加1,使其运行2,500次。

另外,我注意到的另一件事是你的for循环中没有花括号,所以它循环,但从不做任何事情。您应该在for循环中添加{}个大括号,就像对if语句所做的那样。

所以,你的for循环应该是这样的:

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);
    }
}