奇怪的JAVA布尔评估问题

时间:2012-06-13 14:27:57

标签: java

您好我有以下代码:

  boolean result = someexpression();

            if(!result)
            {
            System.out.println("False..."); 
            }
            if (result); 
            {
                System.out.println("True");
            }

它打印两个(False和true) 我也尝试过像

这样的东西
     if(result==true)

但似乎没有做到这一点。无论变量的值是什么,它只是进入条件。我正在使用eclipse,这只发生在特定部分。

2 个答案:

答案 0 :(得分:8)

if (result); 

删除此行末尾的;

使用;,表示“如果resulttrue,则不执行任何操作”。包含下一个语句的块不是if的一部分,将始终执行。它与此完全相同:

if (result)   // if result is true
    ;         // then do nothing

System.out.println("True");  // is always executed

答案 1 :(得分:7)

你在if语句的末尾有一个流氓分号。

if (result);

这使您的代码评估为

if (result) {

}
{
    System.out.println("True");
}

其中第二对{}表示总是被执行的代码块,因为它不再是if控制块的一部分。所以摆脱那个分号(我假设不是你打算放在那里)!