Java IF语句就是不起作用

Java IF语句就是不起作用,java,android,return,Java,Android,Return,我正在编写一个android应用程序,它可以做很多事情。我最近对代码进行了重构,以获得更好的结构,但突然间我遇到了一个非常奇怪的问题 handleRequest(String str) { boolean foo = executeCommand(str); this.publishProgress("FOO1: " + foo); if (foo == false); { this.publishProgress("FOO2: " + foo)

我正在编写一个android应用程序,它可以做很多事情。我最近对代码进行了重构,以获得更好的结构,但突然间我遇到了一个非常奇怪的问题

handleRequest(String str)
{
    boolean foo = executeCommand(str);
    this.publishProgress("FOO1: " + foo);

    if (foo == false);
    {
        this.publishProgress("FOO2: " + foo);
        sendString("Failed to execute: " + str);
    }

    this.publishProgress("FOO3: " + foo);
    sendEOM();
}
上面的代码应该执行一个命令,如果命令执行正确,则存储'foo'。这段代码位于Android AsyncTask(线程)中,因此我使用“publishProgress”来显示toast

我一直在翻调试器,FOO是真的!祝酒词也显示了福在整个过程中都是真实的。但是,它继续前进并跳入IF块并执行该操作。我以前从未见过这种情况,我认为这是Java的一个问题。我正在单步执行函数“executeCommand”,它看起来也在跳过返回语句

我已经在一个虚拟设备和一个真实设备上运行了代码,它们都是这样做的

有什么想法吗?我在这里完全不知所措。

你说的

 if (foo == false);
删除分号,它应该是

 if (foo == false) {//your code}

删除分号:
if(foo==false)
->
if(foo==false)

if
语句后加上分号

这样,您的
if
语句本身就存在,并且下面的代码块始终在运行

按如下方式修改代码:

handleRequest(String str) {
    boolean foo = executeCommand(str);
    this.publishProgress("FOO1: " + foo);

    if (foo == false) {
        this.publishProgress("FOO2: " + foo);
        sendString("Failed to execute: " + str);
    }

    this.publishProgress("FOO3: " + foo);
    sendEOM();
}
注意事项
保持块开头大括号与函数定义/循环条件在同一行中,可以大大减少此类错误的发生,我认为。

if语句后面不会有“;”分号


所以不是if
(foo==false)应该是if
(foo==false){}
如果(foo==false),我不知道这行代码是如何编译的,但显然是这样。正如其他人提到的,您需要删除行末尾的分号。与;这意味着如果foo是假的,就什么也不做。然后程序进入两个大括号之间的下一个块。 您需要安装findbugs或PMD来警告此类输入错误。

如果在If语句后写分号(;),则If条件在此结束! 在写入if条件(即


天啊,我觉得自己像个白痴。我真不敢相信我居然漏掉了那个分号!我花了很多时间调试“executeCommand”,认为问题就在那里。。。不管怎样,谢谢你帮我发现了!删除if语句后的分号不是你的问题,而是越来越清楚地使用
if(!foo)
。@dimo414对,我发布这篇文章时感到很沮丧,所以我将它改为“foo==FALSE”,以便它非常清楚,我不会看到任何错误。
if(foo == false){

// block of Code

} //end of if condition