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

これを行うと、プログラムは 2 番目の条件に進みます。if/else if ステートメントでは、ifステートメントが満たされた場合、プログラムはブロックを無視しelse ifます。

現在のコードは単純に最初のブロックを通過し、ステートメントをifスキップしてブロックを終了します。else if

于 2012-09-27T08:56:19.887 に答える
1

すでに多くの良い回答/コメントがありますが、ここに何か追加したかっただけです -

1.

if (condition) {
} else {
}

単一のコード構造です。条件は実行時の最初に評価され、java は実行するブロック ( ifブロックまたはelseブロック) を決定します。実行できるのは 2 つのうちの 1 つだけです。

  1. Java では、if/elseをネストできます。つまり、以下のようなものを持つことができます -

    if(条件1){ } else if (条件2) { } else if (条件3) { } else { }

それは事実上以下と同じです -

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

ここで、条件を満たしたブロックのみが実行されることに注意してください。どの条件も満たされない場合、最も内側のelseが実行されます (つまり、condition3のelseブロック) 。

  1. 最後に、あなたの混乱は以下のブロックの間にあると思います

    boolean 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 に答える
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 に答える
0

2つのブロックのいずれかを終了しないコードに関する詳細情報を提供できますか?ブロック内で変数のSystem.out.println()を実行すると、コードが終了しない理由を判別するのに役立つ場合があります。

コードが依存するパラメーターがtrue/falseのいずれかであるため、if/else-ifの代わりにif/elseペアを使用できます。if-blockが満たされない場合、自動的にelse-blockがトラバースされます。

于 2012-09-27T09:04:10.613 に答える