Menu
Coddy logo textTech

ネストされたループ

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=3

i が 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()は各行の後に次の行へ移動します。

challenge icon

チャレンジ

中級

入力から整数 n を読み取ります。入れ子になったループを使用して、1 から n までの数の掛け算表を出力します。

1 から n までの各行 i について、積 i * 1i * 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()を使う
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド