Java if语句什么时候退出?

时间:2012-09-27 08:54:15

标签: java if-statement conditional-statements

当有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;}

}
}

有什么想法吗?

5 个答案:

答案 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;}

}
}