0

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

}
}

有任何想法吗?

4

6 回答 6

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语句以结束该块。

于 2012-09-27T08:56:19.887 回答
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

于 2012-09-27T09:01:39.630 回答
1

我们已经有很多很好的答案/评论,但只是想在这里添加一些东西 -

1.

if (condition) {
} else {
}

是一个单一的代码结构。条件将在运行时开始评估,java 将决定执行哪个块,即if块或else块。只能执行 2 个中的 1 个。

  1. Java 允许我们嵌套if/else。这意味着我们可以有类似下面的东西 -

    if(condition1){ } else if (condition2) { } else if (condition3) { } else { }

它实际上与以下相同 -

if (condition1) {
} else {
  if (condition2) {
  } else {
    if (condition 3) {
    } else {
    }
  }
}

这里需要注意的是,只有满足条件的块才会被执行。如果不满足任何条件,则执行最里面的else(即condition3的else块)

  1. 最后,我觉得你的困惑是在下面的块之间

    布尔 aBoolean = true; if(aBoolean == true) {
    // 做某事
    aBoolean = false; } else if(aBoolean == false) { // 做另一件事 aBoolean = true; }

VS

boolean aBoolean = true;
if(aBoolean == true) 
{     
  // do something     
  aBoolean = false; 
}  

if(aBoolean == false) 
{
  // do the other thing
  aBoolean = true; 
}

在 2 个示例中的后一个示例中,有 2 个独立的if块,并且两者都将被执行(当然,这在逻辑上不正确,但它是合法的 java 代码。)

于 2016-04-11T08:44:18.993 回答
0

您能否提供有关您的代码未退出两个块中的任何一个的更多信息?在块中执行 System.out.println() 变量可能能够帮助您确定代码未退出的原因。

您可以使用 if/else 对而不是 if/else-if,因为您的代码所依赖的参数是真/假。如果不满足 if 块,则自动遍历 else 块。

于 2012-09-27T09:04:10.613 回答
0

你的代码实际上是一个快捷方式

if (boolean) {
    // do something
    boolean = false;

} else {

    if (!boolean) {
        // do the other thing
        boolean = true;
    }
}

以这种方式编写,如果已经满足第一个条件,则不会处理 case中的内部if嵌套可能会变得更清楚。elseif

于 2012-09-27T09:09:45.900 回答
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;}

}
}
于 2012-09-27T09:46:55.107 回答