ネストされたループ
CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 52/93。
別のループの中にループを配置して、ネストしたループを作成できます。外側のループの反復ごとに、内側のループが完全に実行されます。
for (i in 1..2) {
for (j in 1..3) {
println("i=$i, j=$j")
}
}
// 出力:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3i が 1 のとき、内側のループは 3 回実行されます(j は 1 から 3 まで変化します)。次に i が 2 になり、内側のループがさらに 3 回実行されます。これにより、合計の反復回数は 2 × 3 = 6 回になります。
入れ子のループは、パターンを作成したり、グリッド状の構造を扱ったりするためによく使用されます。
for (row in 1..3) {
for (col in 1..row) {
print("*")
}
println()
}
// 出力:
// *
// **
// ***ここでは、内側のループの範囲が外側のループの変数に依存しており、三角形のパターンを作成しています。print()関数は改行なしで出力し、println()は各行の後に次の行へ移動します。
チャレンジ
中級入力から整数 n を読み取ります。入れ子になったループを使用して、1 から n までの数の掛け算表を出力します。
1 から n までの各行 i について、積 i * 1、i * 2、...、i * n をスペースで区切って出力し、その後に改行します。
たとえば、入力が 3 の場合、出力は次のようになります。
1 2 3
2 4 6
3 6 9入力が 4 の場合、出力は次のようになります。
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16同じ行に値を出力するにはスペースを付けて print() を使用し、次の行へ移動するには println() を使用します。
自分で試してみよう
fun main() {
// 入力を読み取る
val n = readLine()!!.toInt()
// TODO: 以下にコードを書いてください
// ネストしたループを使って掛け算表を出力する
// 同じ行の値にはスペース付きのprint()を使う
// 次の行に移るにはprintln()を使う
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド