Kotlinのbreakとcontinueの違いとは?ループを制御するテクニックを解説
生徒
「先生、Kotlinで繰り返し処理を途中で止めたり、飛ばしたりできるって本当ですか?」
先生
「はい、forやwhileといったループ処理中に、breakやcontinueを使って制御できるんです。」
生徒
「breakとcontinueって何が違うんですか?」
先生
「それでは、それぞれのしくみと使い方についてわかりやすく解説していきます!」
1. breakとは?ループを途中で抜ける方法
まず、breakはループ処理を途中で完全に終わらせるときに使います。途中で条件が満たされたらそこで止めたい場面にぴったりです。
たとえば、1から10まで順番に調べて、5を見つけたらそれ以上繰り返す必要はありません。そんなときにbreakを使います。
fun main() {
for (i in 1..10) {
if (i == 5) {
println("5を見つけたので終了します")
break
}
println(i)
}
}
このコードを実行すると、1~4まで表示したあと「5を見つけたので終了します」と出て、そこでループが終わります。
2. continueとは?指定した回だけスキップ
次に、continueはループ処理のその回だけを
『飛ばして次の回へ進む』
動き方です。途中からやり直すイメージです。たとえば、1から10までの中で偶数だけ飛ばして奇数だけ表示したいときなどに便利です。
fun main() {
for (i in 1..10) {
if (i % 2 == 0) {
continue
}
println(i)
}
}
この場合、偶数(2、4、6、8、10)はスキップされ、1、3、5、7、9だけが表示されます。
3. breakとcontinueの違いまとめ
break:ループ全体を途中で終了する。continue:ループのその回だけをスキップし、次の回に進む。
この違いを頭に入れておくと、繰り返し処理を柔軟に制御できるようになります。
4. while文とbreak・continueの組み合わせ
while文でも同じようにbreakとcontinueが使えます。たとえば、「入力が正しくなるまで繰り返す」ような場面で活躍します。
fun main() {
var i = 0
while (i < 10) {
i++
if (i == 3) {
continue
}
println(i)
if (i == 7) {
println("7に到達したので終了")
break
}
}
}
このコードでは、iが3のときスキップして表示せず、さらに7に達するとループを完全に終了しています。
5. breakとcontinueがあるときの注意点
- ループが複雑になると、
breakを使ったあとで処理が飛びすぎて意図しない動きになることがあります。 continueを使うと、その回の後続の処理をすべて飛ばすため、必要な処理を書き忘れない注意が必要です。
基本的にはループがシンプルな場合に使うと読みやすく、あとからコードを見たときに修正・理解しやすくなります。
6. breakとcontinueでコードをもっとスマートに!
たとえば配列やリストの中から特定のデータを見つけたときだけ処理したり、条件に合わないものだけスキップしたりするとき、breakやcontinueを使うとコードがすっきりします。
初心者のうちは使いどころが難しく感じるかもしれませんが、
「途中でやめたい」「その回だけ飛ばしたい」という場面になったときに、
breakとcontinueを思い出して使ってみてください。
まとめ
Kotlinの繰り返し処理におけるbreakとcontinueは、どちらもループの流れを変えるためのとても重要な構文ですが、その役割はまったく異なります。ここまで学んできた内容をふりかえりながら、より深く理解できるように整理していきましょう。繰り返し処理はプログラムの中でも登場する機会が多く、「途中でループを抜けたい」「ある条件のときだけ処理を飛ばしたい」といった場面は思っている以上に多くあります。そうした状況の中で、break と continue を正しく使い分けることでコードの読みやすさや効率が大きく変わるため、この2つを理解することはとても大切です。
まずbreakは、「条件に当てはまった瞬間にそのループを完全に終わらせる」という動きをするため、探索系やチェック系の処理で真価を発揮します。例えば、リストの中から特定のデータを探して見つけた瞬間にそれ以上処理を続ける必要はありません。そんなときに break を使うことで、無駄な繰り返しを減らして処理速度を上げることができます。特に配列やリストが大きくなればなるほど break の存在は大きな効果をもたらします。
一方でcontinueは、「その回の処理だけをスキップする」という動きをします。これはフィルタリング処理や、ある条件のときだけ処理を避けたい場面で役立ちます。例えば、「偶数のときだけスキップしたい」「空文字のときだけ飛ばしたい」「特定の文字が含まれていたらその行を無視したい」といった状況で continue を使うと、とてもシンプルでわかりやすいコードになります。後続の処理を行わなくてよい部分が増えるため、必要な処理だけを実行できるようになります。
また、今回の記事では for文 や while文 と組み合わせて使う例も学びましたが、繰り返し処理は複雑になるほど break や continue の使い方によってコードの意味が大きく変わってきます。そのため「どこでループを抜けるのか」「どこでスキップするのか」を丁寧に考えながら組み立てることが重要です。条件が複雑な場合はラベル付き break や continue を使うこともできますが、まずは基本をしっかり押さえておくことで自然と応用へ進めるようになります。
ここからは、実際の開発でもよくある「特定のキーワードが含まれるデータを探して見つかったら終了し、それ以外は必要に応じて飛ばしていく」という処理をサンプルとして見てみましょう。今回学んだ break と continue のどちらも使う構成で、実際の挙動を確認しながら学習の定着を図れます。
サンプルプログラム:break と continue を組み合わせた検索とスキップ処理
fun main() {
val keywords = listOf("犬", "猫", "うさぎ", "とり", "ライオン", "猫科", "魚")
for (word in keywords) {
// 「猫」が含まれる文字列はスキップ(continue)
if (word.contains("猫")) {
println("『猫』が含まれるためスキップ:$word")
continue
}
// 「ライオン」を見つけた瞬間に終了(break)
if (word == "ライオン") {
println("ライオンを見つけたのでループを終了します:$word")
break
}
println("処理中:$word")
}
}
上のサンプルでは、猫を含む文字列をスキップしつつ、ライオンを見つけたら処理を止めるという2つの動きを組み合わせています。これだけでも break と continue の違いがはっきりとわかるはずです。特定の条件を除外したり、特定の条件が満たされた瞬間に処理を終えたいときなど、さまざまな場面で応用できるようになります。
さらに、while文 でも同様に break と continue を使うことで柔軟にループ処理を制御できます。ユーザー入力を受け取りながら特定の条件で終了したり、無効な値だけを飛ばしたりする形で活用できるため、実際のプログラミングには欠かせない考え方です。
break と continue をしっかり使い分けることができれば、プログラムの流れを自分の思いどおりに調整できるようになり、複雑な繰り返し処理を書くときもスムーズに進められるようになります。慣れてくると自然と「ここは break が必要だな」「この条件は continue が合うな」という判断ができるようになりますので、ぜひ実際のコードでも積極的に使ってみてください。
生徒
「break と continue の違いがようやくしっかり理解できました!特に continue のスキップは便利ですね。」
先生
「とても良い気づきですね。continue は余計な処理を避けたいときに役立つので覚えておくと便利ですよ。」
生徒
「break は必要なデータを見つけたら終わらせるときに使うんですよね。リストの検索で役立ちそうです!」
先生
「そうです。無駄な繰り返しをなくすことで効率も上がるので実務でもよく使われます。」
生徒
「サンプルプログラムを動かしてみて、実際にスキップしたり終了したりする動きがよくわかりました!」
先生
「理解が深まっている証拠ですね。ループ処理はこれからの学習でも何度も出てきますので、ぜひ今回の学びを活かしてコードを書いてみてください。」