0

次のプログラム構造があります。

outerLoop:
for (i =0; i<x; i++) {
    if(check condition) {
       a = /* do something to calculate a */
       goto jump;
    } else {
        //do something else
    }
}

jump:
if (check condition) {
   //do something
   goto outerLoop;
}

if上記のように、制御をループの部分からforループのif外側にある状態に移したいと考えています。そして、ステートメントforから再びループにジャンプしたいと思います。ifそれ、どうやったら出来るの?gotoJavaにステートメントはありますか?

4

5 に答える 5

2

複数のネストされた for ループがある場合、ブレークとラベルを使用してジャンプする方法があります。

参照: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

リンクの例:

class BreakWithLabelDemo
{
    public static void main(String[] args)
    {
        int[][] arrayOfInts =
        {
            { 32,  87,   3,    589 },
            { 12,  1076, 2000, 8   },
            { 622, 127,  77,   955 }
        };

        int searchfor = 12;
        int i;
        int j = 0;
        boolean foundIt = false;

        search:
            for (i = 0; i < arrayOfInts.length; i++)
            {
                for (j = 0; j < arrayOfInts[i].length; j++)
                {
                    if (arrayOfInts[i][j] == searchfor)
                    {
                        foundIt = true;
                        break search;
                    }
                }
            }

        if (foundIt)
        {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        }
        else
        {
            System.out.println(searchfor + " not in the array");
        }
    }
}
于 2013-07-14T19:19:44.520 に答える
2

他の答えに反する:breakどちらも使用しないでください。ここで達成しようとしていることは、次の方法で実行できると思います。

int calculateA() {
    for (i = 0; i < x; i++) {
        if (/* a was found */) {
            return a;
        } else {
            // do something else
        }
    // What to do when `a` is not found is now explicit
    throw new Exception("cannot calculate a");
}

// OuterLoop should be an actual loop
int a = calculateA();
while (/* second condition */) {
    a = calculateA();
}
于 2013-07-14T19:31:23.983 に答える
1

Java はサポートしていませんgoto(予約語ですが)。ただし、Java は他の C ライクな言語としてサポートされておりbreakcontinue. ここが必要breakです。ループから抜け出します。

C とは対照的に、java にbreakは「ほぼ」ではgotoあるが限定されたラベルが付いています。複数のネストされたループから抜け出したい場合に便利です。

于 2013-07-14T19:17:40.647 に答える
0

breakまたはcontinue、あなたがする必要があることに応じて。

違いについては、この投稿を参照してください。

于 2013-07-14T19:18:14.947 に答える
0

関数呼び出しを使用して、breakとを伴うステートメント間をジャンプできますcontinue。これが役立つかどうかを確認してください:

for (i =0; i<x;i++){
if(check condition)
{
   /*do something
   calculate 'a'
   */
   jump();
   break; //use break if you want to exit the loop
}
else 
//do something else
}//method ends 


void jump()
{
   if(check condition)
   //do something
}
于 2013-07-14T19:20:53.013 に答える