2017-06-17 60 views
0

当我使“Ĵ< = 0”输出被示出,但为什么我没有得到当我进行“Ĵ< 0”线1为什么我没有得到输出,当我在下面的代码中的第1行“j <0”?

public class Test { 


public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    int i,j; 

    for(i=0,j=0;i<3 & j<0;i++,j--)//line 1 
    { 

     System.out.println(i+"..."+j); 
    } 


} 
} 
+0

欢迎堆栈溢出!它看起来像你需要学习使用调试器。请帮助一些[互补调试技术](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之后仍然遇到问题,请随时返回一个[最小,完整且可验证的示例](http://stackoverflow.com/help/mcve),以说明您的问题。当j--完成时, –

+0

..随着j递减,其值变为-1。 –

+0

尝试在for循环之前初始化变量 –

回答

2

j < 0意味着j必须小于0 ,不等于。 j <= 0与等号相符。

对于循环成功j < 0必须是真实的,但因为j与价值0初始化,j < 0是不正确的,这样的循环将基本上就不会做任何事情。

1

因为你的病情通过j < 0总是假的。你从0开始j,所以即使一次减少j也不会是真的。

+0

是的,你说得对..感谢我知道我的错误 –

-1

此代码可以让我来测试你的逻辑(我猜,这是你想要做什么)“正确:”

public class Loop { 
    public static void main(String[] args) { 
     int i = 0; 
     int j = 0; 

     for (i = 0; i < 3; i++) { 
      if (i < 3 && j < 0) { 
       System.out.println(i + "..." + j); 
      } 
      j--; 
     } 
    } 
} 

当我运行此我得到:

1...-1 
2...-2 

j小于0(-1)当i为1

j小于0(-2)当i为2

+0

是的,它按照上述逻辑工作,但是当我们取(i <3&j <0)条件在一个循环内失败,导致JVM检查初始化值以及上述条件。这里j被初始化为零,条件为(i <3 && j <0),所以它失败并且循环终止 –

+0

我在猜测你的逻辑”。我已经包括一个完整的例子,输出(运行时)。用一个代码示例解释你想要完成的是一个好习惯。我很高兴你解决了你的问题。尝试按照这种方法处理您发布的未来问题。 – chocksaway

相关问题