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では if や when は式ですが、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文についてでした。
最後までお読みいただき、ありがとうございました。










