2

这对我来说根本没有意义。

这是我的代码:

boolean that = false;
        if (that == true);
        {
            System.out.println("That is " + that);
        }

然而即使我的输出是

That is false

我在java中这样做并且我正在使用Eclipse galileo,所以每次我编译/运行我的程序时它都会保存它,所以编译器应该得到我程序的更新版本。这是怎么回事?

4

5 回答 5

8

一个常见的错误。删除语句;末尾的。if

顺便说一句,如果我使用括号并使用 IDE 的代码格式化程序,我总是写以下内容。

    if (that == true) {
        System.out.println("That is " + that);
    }

这意味着如果您放错了位置;,或者{可能更明显。

于 2012-04-29T16:01:20.840 回答
3

这是因为你在这里有分号:

 if (that == true);

去掉那个分号!它会导致代码在检查条件后什么都不做(that == true)——从技术上讲,它是一个“空语句”——即我们可以有一个像这样的循环:

    for (int i = 0; ; i++){
      System.out.println("Thanks" );
    }

它会永远消失!

于 2012-04-29T16:01:30.327 回答
3

去除那个 ;

boolean that = false;
     if (that == true)
     {
         System.out.println("That is " + that);
     }

否则总是执行打印。

于 2012-04-29T16:02:01.470 回答
2

试试这样:

    boolean that = false;
    if (that)
    {
        System.out.println("That is " + that);
    }

注意到代码中的额外分号了if吗?这就是为什么。

逻辑测试以分号结束,然后总是执行下一个块。

如果您删除分号,它将符合您的直觉。

于 2012-04-29T16:00:59.737 回答
2
if (that == true);
              // ^ The extra colon you dont need
于 2012-04-29T16:02:57.910 回答