ある行から別の行にジャンプできる構文はありますか?
例:
System.out.println("line");
System.out.println("line2");
System.out.println("line3");
System.out.println("line4");
//goto line2 or something like that??
いいえ、goto
声明はありませんが、いくつかの回避策があります。
do {
//do stuff
if (condition) break; //this will jump--+
//do stuff // |
} while (false); // |
// here <-----------------------------------+
と
int id = 0;
while (true) {
switch (id) {
case 0:
//do stuff
if (condition) {id = 3; break;} //jumps to case 3:
case 1:
if (condition) {id = 1; break;} //jumps to case 1:
// ...
}
}
Javaは意図的に goto をサポートしていません。これは、適切な条件構造を使用して制御フローを構築することを奨励 (強制) するためです。
あなたの例では、適切な方法は while ループです。
System.out.println("line");
while (true) {
System.out.println("line2");
System.out.println("line3");
System.out.println("line4");
}
考えてみれば、goto なしで表現できないコード フロー パターンはありません (個人の根深い習慣から逸脱する必要があるかもしれません)。goto を使用するのは、コードの重複を避ける場合のみです。このようなケースに遭遇した場合は、必要な場所で呼び出すことができる別のメソッドにコードを再構築すると、よりクリーンなソリューションになります。
たとえば、switch ステートメントを使用して、これを回避する方法で実現できます。
switch (lineNum) {
case 1: System.out.println("line 1");
case 2: System.out.println("line 2");
case 3: System.out.println("line 3");
case 4: System.out.println("line 4");
}
lineNum
次に、適切な値があることを確認する必要があります。
do
後方へのジャンプには、 orwhile
ループが必要です。
正確に何を達成したいですか?http://geekycoder.wordpress.com/2008/06/25/tipjava-using-block-label-as-goto/のようにラベルを使用できますが、とにかく goto のようなステートメントを使用すると、スパゲッティ コードにつながる可能性があります
予約済みのキーワードですが、Java には goto はありません。
goto は不適切なプログラミング構造と見なされているため、Java から除外されました。