ラベル文
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 35/59。
Java におけるラベル文は、コード内の特定の箇所をマークし、これらのラベルを使用して break および continue 文でフローを制御することを可能にします。ラベルは特にネストしたループで有用です。
ラベル付きのネストされたループを作成:
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}ラベル付きの continue を使用:
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}チャレンジ
簡単findNumber という名前のメソッドを作成し、3 つの引数を受け取るようにしてください:
- 整数型の 2 次元配列 (
grid) - 検索する整数 (
target) - 最初に見つかった発生後に検索を停止するかどうかを決定するブール値 (
breakEarly) メソッドは、ラベル付きループを使用してターゲット番号を検索し、見つかった各位置を出力します。breakEarly が true の場合、最初に見つかった後に停止します。各見つかった要素は、形式Found at: rowIndex,colIndexで出力してください。
チートシート
Javaのラベル文は、コード内の特定のポイントをマークし、これらのラベルを使用してbreakおよびcontinue文でフローを制御することを可能にします。
ラベル付きのネストしたループを作成:
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}ラベル付きの continue を使用:
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}自分で試してみよう
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static void findNumber(int[][] grid, int target, boolean breakEarly) {
// ここにコードを書いてください
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 2D 配列を表す JSON 文字列を読み取る
String gridString = scanner.nextLine();
// ターゲット数を読み取る
int target = Integer.parseInt(scanner.nextLine());
// breakEarly フラグを読み取る
boolean breakEarly = Boolean.parseBoolean(scanner.nextLine());
Type gridType = new TypeToken<int[][]>(){}.getType();
int[][] grid = new Gson().fromJson(gridString, gridType);
findNumber(grid, target, breakEarly);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。