繁体   English   中英

我的 if 语句总是返回 true,无论如何

[英]My if statement ALWAYS returns true, no matter what

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

这是我的代码:

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

然而,即使我的输出是

That is false

我在 java 中执行此操作,并且使用 Eclipse galileo,因此每次编译/运行我的程序时,它都会保存它,因此编译器应该获得我程序的更新版本。 这是怎么回事?

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

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

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

这意味着如果您放错了; {可能更明显。

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

 if (that == true);

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

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

它会永远存在!

去除那个 ;

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

否则总是执行打印。

像这样尝试:

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

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

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

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

if (that == true);
              // ^ The extra colon you dont need

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM