为什么这个循环总是返回false?

时间:2014-02-28 11:02:51

标签: java if-statement return

    boolean check = false;
    for(int i = 0; i == 16; i++){
        if(i == i)
            {
                System.out.println("true");
                check = true;   
            }
        else{
                check = false;
        }
    }
        return check;   
    }

我已经更改了我的if语句,为了不必发布代码加载,但我的问题是,为什么它仍然将检查返回为false,即使在第一个循环中if语句是正确的,它应该读取if(0 == 0)这是真的为什么它不将check检查为true?

注意到如果我删除循环,它可以工作:/任何原因?

谢谢!

5 个答案:

答案 0 :(得分:4)

您的循环条件错误。考虑这个执行流程:

for (int i = 0; i == 16; ++i) 
  1. i初始化为0
  2. 检查i == 16(是否为假)
  3. 退出循环
  4. 所以循环体永远不会被执行。

    你应该写for (int i = 0; i <= 16; ++i)

答案 1 :(得分:3)

因为你永远不会进入for循环,所以它应该是:

for(int i = 0; i <= 16; i++){

答案 2 :(得分:0)

for(int i = 0; i == 16; i++){

您只是在i=16我已分配到0

的情况下才知道进入循环

答案 3 :(得分:0)

这种条件适用于循环...直到结构,正如其他人说你永远不会进入循环所以使用:

 for(int i = 0; i == 16; i++) { ... }

或者如果你坚持像循环这样的结构...直到(cond。)或do-while(!cond。):

int i = 0;
do{
    if(i == i)
        {
            System.out.println("true");
            check = true;   
        }
    else{
            check = false;
    }
}while( ++i != 16 );

根本不可读(至少我是这么认为),我认为这对任何Java程序员来说都不方便。

答案 4 :(得分:0)

我喜欢这个问题,这是我在这个网站上看到的第一个代码,显然你的情况从未运行过,因为我从来没有遇到条件i == 16所以循环永远不会运行。 试试我&lt; = 16 试试这个

for(int i = 0; i <= 16; i++){