IF声明不起作用

yel*_*low 9 java android return

我正在写一个做很多东西的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();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码应该执行一个命令,如果命令正确执行,则存储'foo'.此代码位于Android AsyncTask(线程)中,因此我使用'publishProgress'来显示吐司.

我一直在翻阅调试器,FOO是真的!吐司显示FOO在整个过程中都是真实的.然而,它继续前进并跳转到IF块内部并执行它.我以前从未见过这个,我认为这是Java的一个问题.我正在踩着函数'executeCommand',看起来它也在跳过return语句.

我已经在虚拟设备和真实设备上运行了代码,他们都这样做了.

有任何想法吗?我在这里完全不知所措.

kos*_*osa 22

你说

 if (foo == false);
Run Code Online (Sandbox Code Playgroud)

删除分号,应该是

 if (foo == false) {//your code}
Run Code Online (Sandbox Code Playgroud)

  • 哦,伙计,我觉得自己像个白痴.我不敢相信在那里错过那个分号!我花了很多时间调试'executeCommand'认为问题在那里......无论如何,感谢你为我发现! (2认同)

Jac*_*ano 9

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


ior*_*vic 9

你在声明后加了一个分号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();
}
Run Code Online (Sandbox Code Playgroud)

注意
保持你的块开口括号与函数定义/循环条件在同一行中会使这些错误更加频繁,IMO.