当有if-else语句时,我有一个函数。它基本上是这样的:
if(boolean == true)
{
// do something
boolean = false;
}
else if(boolean == false)
{
// do the other thing
boolean = true;
}
现在,我的理解是if语句将退出并将控制权返回给函数,然后根据更改的布尔值继续。但我显然遗漏了一些东西,因为我的代码没有退出原始的'if'/'else if'语句(无论原始情况如何)。谁能告诉我我错过了什么?
根据要求,关于代码的其他数据是它是我的android项目的一部分,if-else块中的每个条件都有一个嵌套函数,并且使用这些函数设置/取消设置布尔(全局)值。所以代码现在看起来像这样:
dummyFunction(){
boolean = checkIfTrueOrFalse();
if (boolean) {
onClick( public void onClick(){
// do something
boolean = false;}
} else if(boolean == false){
onClick( public void onClick(){
// do something
boolean = true;}
}
}
有什么想法吗?
答案 0 :(得分:3)
if(boolean == true)
{
// do something
boolean = false;
}
if (boolean == false)
{
// do the other thing
boolean = true;
}
执行此操作时,程序将流向第二个条件。在if / else if语句中,如果满足if
语句,则程序将忽略else if
块。
您当前的代码只是流经第一个if
块,然后跳过else if
语句以结束该块。
答案 1 :(得分:1)
void someMethod()
{
boolean aBoolean = true;
if(aBoolean == true)
{
// do something
aBoolean = false;
}
else if(aBoolean == false)
{
// do the other thing
aBoolean = true;
}
}
执行someMethod
时,由于aBoolean
被分配了true
,控件将进入if
阻止,因为条件变为真。如果是false
,则控件将转到else
部分。
答案 2 :(得分:0)
您是否可以提供有关您的代码未退出2个区块的更多信息?对块中的变量执行System.out.println()可能会帮助您确定代码未退出的原因。
您可以使用if / else对而不是if / else-if作为您的代码所依赖的参数将是true / false。如果不满足if-block,则会自动遍历else块。
答案 3 :(得分:0)
您的代码实际上是
的快捷方式if (boolean) {
// do something
boolean = false;
} else {
if (!boolean) {
// do the other thing
boolean = true;
}
}
以这种方式编写,如果已经满足第一个if
条件,那么嵌套在else
案例中的内部if
将不会被处理,这一点可能会更清楚。
答案 4 :(得分:0)
我已经解决了(当然从这里接受输入)。我刚刚在嵌套函数中添加了对函数的调用,并且它工作正常。现在代码看起来像这样:
public static void dummyFunction(){
boolean = checkIfTrueOrFalse();
if (boolean) {
onClick( public void onClick(){
// do something
dummyFunction();
boolean = false;}
} else if(boolean == false){
onClick( public void onClick(){
// do something
dummyFunction();
boolean = true;}
}
}