-1

goto は Java では何の役にも立たないキーワードであることは知っています。コードの別の部分に移動するラベルやその他の方法を使用して、このようなことを実行できますか?

    public static void main(String[] args) {
        for(int i=5; i>0; i--){
            System.out.println();

            first:
            for(int x=i; x<6; x++){
                System.out.print("*");
            }
        }
        System.out.println("print '*'");{
            break first;
        }
    }
}
4

3 に答える 3

3

あなたはこれを行うことができます

first: {
  for(int i=5; i>0; i--){
    System.out.println();
    if (func(i))
       break first;
    for(int x=i; x<6; x++){
        System.out.print("*");
    }
  }
}
System.out.println("print '*'");
于 2013-08-10T13:04:06.013 に答える
2

を使用して、次のcontinueようにコード内の別のラベルに移動できます。

public class Label {
    public static void main(String[] args) {
        int temp = 0;
        out: // label
        for (int i = 0; i < 3; ++i) {
            System.out.println("I am here");
            for (int j = 0; j < 20; ++j) {
                if(temp==0) {
                    System.out.println("j: " + j);
                    if (j == 1) {
                        temp = j;
                        continue out; // goto label "out"
                    }
                }
            }
        }
        System.out.println("temp = " + temp);
    }
}

出力:

I am here
j: 0
j: 1
I am here
I am here
temp = 1

ただし、それを行うことはお勧めしません。James Goslingが goto ステートメントをサポートする元の JVM を作成したため、より適切な方法がありますが、その後、彼はこの機能を不要として削除しました。goto が不要な主な理由は、通常、より読みやすいステートメント (break/continue など) に置き換えるか、コードの一部をメソッドに抽出することで置き換えることができるためです。

出典: James Gosling、質疑応答セッション

于 2013-08-10T13:20:20.123 に答える
2

はい、しかし goto が使用されないのには理由があります。それはひどいです。ただし、興味がある場合は、次の方法があります。

http://www.steike.com/code/useless/java-goto/

代わりに、これを適切な方法で行いたい場合は、本当の質問をして最終目標を述べてください。そうすれば、設計を支援できます。:)

于 2013-08-10T13:08:05.593 に答える