6

私の質問の目的のために、私はケース1だけを含めましたが、他のケースは同じです。値が現在1であるとしましょう。ケース1に進み、forループが配列を調べて、各要素がwhatever_value変数と一致するかどうかを確認します。この場合、そうであれば、値変数が2に等しいと宣言し、ループから抜け出します。問題は、(日食で)他のブレークを強調表示すると、ブレークもforステートメントに付加されていると表示されますが、forステートメントはifステートメントにのみ付加され、elseifステートメントは良い。forステートメントには角かっこがないため、ifステートメントに対してのみループしますが、eclipseはそれ以外のことを示します(そうでない場合は、0から配列の長さまでループします)。

  switch (value) {
  case 1:
     for (int i = 0; i < something_in_the_array.length; i++)
        if (whatever_value == (something_in_the_array[i])) {
           value = 2;
           break;
        } else if (whatever_value == 2) {
           value = 3;
           break;
        } else if (whatever_value == 3) {
           value = 4;
           break;
        }
     break;
  case 2:

  // code continues....
4

5 に答える 5

11

あなたの問題.....あなたのforループは、すべてのものを網羅していると思います。これはifelse ifhoang nguyenが指摘したように、1つのステートメントのように機能します。

これに変更します。forループが動作するコードブロックを示す括弧と、最初のループが。に変更されていることに注意してelse ifくださいif

switch(value){

    case 1:
        for(int i=0; i<something_in_the_array.length;i++) {
            if(whatever_value==(something_in_the_array[i])) {
                value=2;
                break;
             }
        }

        if(whatever_value==2) {
            value=3;
            break;
        }
        else if(whatever_value==3) {
            value=4;
            break;
        }
        break;


    case 2:

code continues....
于 2012-10-25T02:49:24.837 に答える
3

この場合、ブレークラベルを使用することをお勧めします。

http://www.java-examples.com/break-statement

このようにして、forループの外側で具体的に呼び出すことができます。

于 2012-10-25T02:52:38.910 に答える
2

しかし、私はforステートメントをifステートメントに添付するだけで、elseifステートメントも添付したくありませんでした。

さて、その時を取り除きelseます。else ifの一部ではない場合は、次のforように記述します。

           for(int i=0; i<something_in_the_array.length;i++)
                if(whatever_value==(something_in_the_array[i]))
                {
                    value=2;
                    break;
                }

           if(whatever_value==2)
           {
                value=3;
                break;  // redundant now
           }

           else if(whatever_value==3)
           {
                value=4;
                break;  // redundant now
           }

そうは言っても:

  • ここで実際に何をしようとしているのかはまったくわかりませんが、
  • ループにその部分がないことは、elseここではあまり意味がないようですが、
  • 多くの人(私自身を含む)は、常に中かっこを使用することだと考えています...コードを読むときに誤ったインデントによってつまずかないようにするためです。(そしてこの場合、あなたがここで実際に何をしようとしているのかを理解するのに役立つかもしれません...)

最後に、前の行の終わりに中かっこを配置すると、中かっこが目立たなくなります。例えば

  if (something) {
     doSomething();
  }

それよりも:

  if (something) 
  {
     doSomething();
  }
于 2012-10-25T02:52:28.927 に答える
2

家庭的なやり方のように思えますが、必要な場合は...ニーズに合わせて再構築することができます。

boolean found = false;

case 1:

for (Element arrayItem : array) {
    if (arrayItem == whateverValue) {
        found = true;    
    } // else if ...
}
if (found) {
    break;
}
case 2:
于 2012-10-25T02:52:46.353 に答える
2

forステートメントに、のみを含める必要がある場合は、次のように、ステートメントifを削除する必要がありますelse

for(int i=0; i<something_in_the_array.length;i++)
    if(whatever_value==(something_in_the_array[i]))
    {
        value=2;
        break;
    }

    /*this "else" must go*/
    if(whatever_value==2)
    {
        value=3;
        break;
    }

    else if(whatever_value==3)
    {
        value=4;
        break;
    }
于 2012-10-25T02:52:58.723 に答える