Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-多个返回语句-第一个不返回?_Java_Android_Debugging_Return - Fatal编程技术网

Java-多个返回语句-第一个不返回?

Java-多个返回语句-第一个不返回?,java,android,debugging,return,Java,Android,Debugging,Return,我正在玩弄一些Android编程,正在编写一些打开和关闭文件的方法。我想对文件进行一些基本检查,如果满足条件,则返回true,如果到达方法末尾,则返回false 我正在用AndroidTestCase测试这些,在我向清单中添加了修复“canRead()”调用所需的权限之后,我开始逐步检查它们。我看到调试器点击了我的“return true”语句,但经过这一步,它会转到下一行“return false”,而不是实际返回 我知道我可以将“return false”封装在else块中,但我只是好奇为什

我正在玩弄一些Android编程,正在编写一些打开和关闭文件的方法。我想对文件进行一些基本检查,如果满足条件,则返回true,如果到达方法末尾,则返回false

我正在用AndroidTestCase测试这些,在我向清单中添加了修复“canRead()”调用所需的权限之后,我开始逐步检查它们。我看到调试器点击了我的“return true”语句,但经过这一步,它会转到下一行“return false”,而不是实际返回

我知道我可以将“return false”封装在else块中,但我只是好奇为什么函数在假定返回后继续执行。“if”块中的return语句是从块中返回,还是从整个函数调用中返回

public boolean OpenFile(String testFile) {
    myFile = new File(testFile);
    if (myFile.exists() && myFile.isFile() && myFile.canRead()) {
        return true;
    }
    return false;
}

public boolean CloseFile() {
    if (myFile != null ) {
        return true;
    }
    return false;
}

如果
If
语句中的条件为true,则
返回true被执行,方法终止


要检查这一点,只需将
println(…)
放在
返回false之前指令,您将看到它不会被执行。再次检查您的调试,您可能被该工具弄糊涂了。

它与
返回的位置无关,问题是该条件不满足。请尝试避免
if(expression)返回true/false模式。它可以是
return myFile.exists()&&myFile.isFile()&&myFile.canRead()
返回我的文件!=无效.return始终在执行时立即从函数调用返回。你所描述的并没有发生。调试时,您可能会错误地解释所看到的内容。添加一些日志语句并向我们显示输出。请在返回值之前尝试打印,。看看实际情况behavior@AlexisC. 在这个表达式中会有额外的逻辑,“return true”只是测试我的测试的一个占位符。是的,我只是对步进的工作方式感到困惑。在测试方法中为调用设置断点后,我能够验证它是否按预期返回true。