Kotlinのwhile文について

採用はこちら

Kotlinの while文 は、「指定した条件が真(true)である間、処理を繰り返す」ための基本的な制御構文です。

Javaなどの他言語と構文は似ていますが、Kotlin特有の思想(null安全・可読性重視)を踏まえると、使いどころや書き方には明確な指針があります。

以下では 構文 → 挙動 → do-whileとの違い → 制御構文 → 実務での使い所 の順で解説します。

目次

while文の基本構文

while (条件式) {
    処理
}
  • 条件式は 必ず Boolean 型
  • 条件が true の間、ブロック内が繰り返し実行される
  • 条件が false になると即座にループを終了する

基本例

var i = 0

while (i < 5) {
    println(i)
    i++
}

出力

0
1
2
3
4

ループ内で条件に関わる変数を更新しないと、無限ループになる点は常に注意が必要です。

while文は「前判定ループ」

while文は 処理を実行する前に条件を評価 します。

var x = 10

while (x < 5) {
    println("この処理は実行されない")
}

この場合、条件は最初から false のため、処理は一度も実行されません。

do-while文との違い

Kotlinには do-while 文も用意されています。

構文

do {
    処理
} while (条件式)

特徴

  • 必ず1回は処理が実行される
  • その後で条件判定が行われる

var x = 10

do {
    println("必ず1回は実行される")
} while (x < 5)

初期状態に関わらず1回は処理したい場合に有効です。

無限ループとbreak

無限ループの基本形

while (true) {
    // 繰り返し処理
}

breakでループを抜ける

while (true) {
    val input = readLine() ?: break
    println(input)
}
  • break:現在のループを即座に終了
  • continue:現在の周回をスキップして次の判定へ

readLine()コンソールアプリ前提 の入力関数です。

continueの挙動

var i = 1

while (i <= 5) {
    if (i == 3) {
        i++
        continue
    }
    println(i)
    i++
}

出力

1
2
4
5

continue によって、その周回の残りの処理がスキップされます。

変数とスコープの注意点

var sum = 0
var i = 1

while (i <= 5) {
    sum += i
    i++
}

println(sum) // 15
  • var は再代入可能
  • val は再代入不可(ループカウンタには不向き)

コレクションとwhile文

インデックスを使った例

val list = listOf("A", "B", "C")
var index = 0

while (index < list.size) {
    println(list[index])
    index++
}

ただし、全要素を順番に処理するだけの場合 は、for 文の方が可読性に優れます。

for (item in list) {
    println(item)
}

while文は「終了条件が動的」「回数が事前に決まらない」処理に向いています。

Kotlinらしいnull安全なwhileの書き方

一般的な書き方

var line = readLine()

while (line != null) {
    println(line)
    line = readLine()
}

Kotlinらしい簡潔な書き方

while (true) {
    val line = readLine() ?: break
    println(line)
}

?: break を使うことで、nullチェックとループ終了を自然に表現できます。

while文は「式」ではない

Kotlinでは ifwhen は式ですが、while / do-while文(statement) です。

val x = while (true) { } // コンパイルエラー

値を返す目的では使えない点を理解しておく必要があります。

while文が適しているケース

適している場面

  • ループ回数が事前に分からない
  • 入力や状態変化を待つ処理
  • 探索・逐次処理・状態遷移
var running = true

while (running) {
    val command = readLine()
    if (command == "stop") {
        running = false
    }
}

他の構文が向いている場面

  • 回数固定:repeat
  • コレクションの全走査:for / 標準関数

repeatとの比較

repeat(5) {
    println(it)
}
  • 回数が明確な場合は repeat が簡潔
  • it は 0 から始まる

注意点まとめ

  • 条件を変化させないと無限ループになる
  • 条件式は必ず Boolean
  • 可読性が下がるほど複雑な条件は避ける
  • 「回数未定かどうか」を基準にwhileを選ぶ

まとめ

  • while文は 前判定型の繰り返し構文
  • do-whileは 最低1回実行
  • break / continue で柔軟な制御が可能
  • Kotlinでは null安全な書き方と相性が良い
  • 適材適所で使うことが重要

以上、Kotlinのwhile文についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次