はじめに
配列やfor文の基本を押さえたら、次はネストfor文(for文の中にfor文)をマスターしよう!
二重ループは「二重の繰り返し処理」を行いたいときに使う構文で、全パターンの組み合わせや表形式データの処理などに欠かせないよ。
この記事では、ネストfor文の書き方、動きのイメージ、よくあるミスを整理していくよ。今回は自分のパーティと相手ポケモンのパーティの総当たり表を作る例で説明するよ。これで「どのポケモンがどの相手に強いのか」を一覧で見られるようになるんだ。
🎓 ネストfor文の基本構造
for (int i = 0; i < outerLimit; i++) {
for (int j = 0; j < innerLimit; j++) {
// 内側ループの処理
}
}
- 外側ループが1回回る間に、内側ループがすべて回る
- 表やリストの縦横を走査するような動き
⚡ 例:自分のポケモン×相手ポケモンの総当たり表
String[] myTeam = {"ピカチュウ", "カビゴン", "ゲンガー"};
String[] enemyTeam = {"フシギダネ", "ゼニガメ", "ヒトカゲ"};
for (String myPoke : myTeam) {
for (String enemyPoke : enemyTeam) {
System.out.println(myPoke + " vs " + enemyPoke);
}
}
- 外側ループで自分のポケモンを選び、内側ループで相手のポケモンを選ぶ
- 全組み合わせ(3×3=9パターン)を網羅して表示できる
条件付きネストfor
組み合わせの中から特定条件だけ表示することも可能。
for (String myPoke : myTeam) {
for (String enemyPoke : enemyTeam) {
if (myPoke.equals("ピカチュウ") && enemyPoke.equals("ゼニガメ")) {
System.out.println(myPoke + "は" + enemyPoke + "に強い!");
}
}
}
- 実際のバトルシミュレーションでは、ここでタイプ相性の計算を行って勝率や
有利不利を判定できる
🐛 よくあるエラーパターン
1. 変数名の衝突
for (int i = 0; i < 3; i++) {
for (int i = 0; i < 3; i++) { // NG: 同じ名前の変数iを再宣言
System.out.println(i);
}
}
➡ 対策: 外側と内側で別の変数名を使う(例: i
とj
)
2. 範囲の取り違え
for (int row = 0; row < table.length; row++) {
for (int col = 0; col < table.length; col++) { // NG: 列数に行数を使っている
System.out.println(table[row][col]);
}
}
➡ 対策: 列は table[row].length
を使う
3. 処理の重複
- 条件設定が甘いと同じ組み合わせを何度も処理してしまう
🪄 次回予告
次は break と continue を使ったループ制御!条件を満たしたら即終了、
特定条件をスキップするテクニックを解説するよ!
ピッピカチュウ!!
あとがき
ここまで読んでくれて、本当にありがとうございました。
「プログラミングって難しい…」って思ってた人も、
「ちょっと楽しいかも…!」って思ってもらえたらうれしいな。
次の投稿も、よろしくおねがいします。
💬 コメント・フィードバック歓迎!
「この章わかりやすかった!」
「これ表現まちがってない?」
「次は○○をやってほしい!」などなど、
お気軽にコメントで教えてくださいね!