Java IF语句就是不起作用
我正在编写一个android应用程序,它可以做很多事情。我最近对代码进行了重构,以获得更好的结构,但突然间我遇到了一个非常奇怪的问题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)
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