8

誰が何をするか知ってgroup_skipいますか?

多分それは基本的なプログラミングですが、私は数年間 Java を使用してプログラミングを行っており、今日それを見つけました。

group_skip: do {
    event = stepToNextEvent(FormController.STEP_OVER_GROUP);
    switch (event) {
        case FormEntryController.EVENT_QUESTION:
        case FormEntryController.EVENT_END_OF_FORM:
            break group_skip;
    }
} while (event != FormEntryController.EVENT_END_OF_FORM);

ありがとう!

4

4 に答える 4

17

これはラベル付けされた loopです。break group_skip;ステートメントが実行されると、次のラベル付けされた do while ループから飛び出します。group_skip

boolean isTrue = true;
    outer: for (int i = 0; i < 5; i++) {
        while (isTrue) {
            System.out.println("Hello");
            break outer;
        } // end of inner while
        System.out.println("Outer loop"); // does not print
    } // end of outer loop
   System.out.println("Good Bye");

これは出力します

Hello
Good Bye

ここでコンセプトを明確にすることができます。

  • と呼ばれるラベル付きforループがあり、outer内部whileループがあります
  • 内側の for ループが実行されているときに、break outer;ステートメントに遭遇します
  • outer for loopにはステートメントSystem.out.println"Outer loop" がありますが、印刷されません。
  • これは、コントロールがラベル付きループから直接break outer飛び出すためです。for

さて、このcontinueステートメントの例

outer: for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.println("Hello");
            continue outer;
        } // end of inner loop
        System.out.println("outer"); // this won't print
    } // end of outer loop
    System.out.println("Good bye");

これは印刷します

Hello
Hello
Hello
Hello
Hello
Good bye
  • ここにラベル付きforループと内側forループがあります
  • 内側のforループが印刷Helloされ、ループに続きouterます。
  • このため、内側のforループの下のステートメントはスキップされ、outerループが実行され続けます。
  • outerfor ループの最後に出力Good Byeされます

これですべてが明確になることを願っています。

于 2013-06-27T05:08:57.043 に答える
8

group_skipはラベルです。ラベルを使用すると、ネストされた特定のループを中断または継続できます。

オラクルがこの件に関して言っていることは次のとおりです。

于 2013-06-27T05:08:59.560 に答える
4

単純な break ステートメントを使用する場合は常に、最も内側のループから最も外側のループにのみ制御を移すことができます (ループのネストがある場合)。例えば

for(int i=0; i < 10; i++){
    if(i==5){
      break;
    }
}
statement x;

制御をステートメント xに転送するだけです。ただし、ネストされたループ内で使用すると、動作が異なります。

for(int i=0; i < 10; i++){
 for(int j=0; j < 10; j++)
    if(i==5){
      break;
    }
 }
statement y;
}
statement x;

この場合、制御をステートメント yに送信します。最も内側のループから最も外側のループまたはループの外側にコントロールを送信する場合は、ラベル付きのこのような break ステートメントが必要です。自分でそれを行うだけで、興味深い出力が表示されます.. :)

于 2013-06-27T05:46:35.983 に答える
0

group_skipブレイクなどに使われるレーベルです。(他の言語でも goto と jump を使用)

Java では特に、ラベルによって識別されるコード ブロックから抜け出すために使用され、breakラベル付きのコード ブロックから抜け出すことを除いて、while ループ内のステートメントと同じように動作します。

ここで、このトピックに関するいくつかの議論があります

于 2013-06-27T05:08:42.293 に答える