公開日:2020/01/26更新日:2020/08/03
【Kotlin基礎】Kotlinでwhile、do-whileによるループ処理を実装する方法

- Kotlinでwhile、do-whileによるループ処理を実装する方法が知りたい。
- breakやcontinueの使い方が知りたい。
- Javaで実装した場合との違いが知りたい。
- 他のループ処理についても知りたい。
そんな方、いらっしゃいませんか?
本記事では、while、do-whileによるループ処理の実装方法、そして、breakを使用したループ処理から抜け出す方法や、continueを使用したループのスキップ方法を、サンプルコードを交え、解説しております。
目次
Kotlinでwhile, do-whileによるループ処理を実装する方法
whileを実装する方法
Kotlinで、whileによるループ処理は、以下のように実装します。
- Kotlin
while(条件式) {
// ループ処理
}
条件式がtureである限り、ループ処理が実行され続けます。
では、どのように実行されるかを、サンプルコードで解説致します。
■ 変数iが、0からインクリメントし、5未満の間ループする処理
- Kotlin
- Java
var i = 0
while(i < 5) {
println(i)
i++
}
println("finish")
// 0、1、2、3、4、finish
int i = 0;
while(i < 5) {
System.out.println(i);
i++;
}
System.out.println("finish");
// 0、1、2、3、4、finish
0から4までの数値が出力された後、whileのループ処理を抜け、"finish"を出力しております。
whileの条件式は、i < 5となっております。
ループ処理中に、変数iがインクリメントされ、iが5になった時、i < 5の条件式がfalseとなるため、ループ処理を抜けます。
ループ処理中にiをインクリメントしなかった場合、iは0のままで、i < 5の条件式はtrueとなり、永遠にループ処理が実行されてしまいます。
そうならないよう、whileでループ処理を実装する際は、条件式がfalseになる処理を実装するか、breakでループから抜ける必要があります。
breakについては、break、continueの使い方で解説致します。
- whileは、while(条件式) { ループ処理 } と実装する
- breakで抜けるか、条件式がfalseとなる処理を実装しなければならない
【公式ドキュメント】 : Loops - Kotlin Programming Language
do-whileを実装する方法
続いて、do-whileの実装方法を紹介致します。
do-whileは次のように実装します。
- Kotlin
do {
// ループ処理
} while(条件式)
先ほどのwhileとの違いは、条件式の判定のタイミングです。
whileは、条件式の判定が行われた後、ループ処理が実行されます。
一方do-whileは、ループ処理が実行された後、条件式の判定が行われます。
では、whileとdo-whileの違いを実装例で確認しましょう。
■ 変数iが、0からインクリメントし、5未満の間ループする処理
- while
- do-while
var i = 5
while(i < 5) {
println(i)
i++
}
println("finish")
// finish
var i = 5
do {
println(i)
i++
} while(i < 5)
println("finish")
// 5、finish
どちらも同じ条件式で、最初からfalseと判定されます。
しかし、do-whileの方は、先にループ処理が実行されるので、5が出力されます。
- do-whileは、do { ループ処理 } while(条件式) と実装する
- do-whileは、条件式の判定前に、ループ処理が実行される
break、continueの使い方
続いて、break、continueの使い方を紹介致します。
break
breakは、ループ処理を途中で抜ける際に使用されます。
- Kotlin
- Java
var i = 0
while(i < 5) {
if(i == 3) break
println(i)
i++
}
println("finish")
// 0、1、2、finish
int i = 0;
while(i < 5) {
if(i == 3) break;
System.out.println(i);
i++;
}
System.out.println("finish");
// 0、1、2、finish
変数iが3になるとbreakによってループ処理を抜けるため、2までしか出力されません。
continue
continueは、ループ処理をスキップする際に使用されます。
- Kotlin
- Java
var i = 0
while(i < 5) {
i++
if(i == 3) continue
println(i)
}
println("finish")
// 1、2、4、5、finish
int i = 0;
while(i < 5) {
i++;
if(i == 3) continue;
System.out.println(i);
}
System.out.println("finish");
// 1、2、4、5、finish
上記の例では、3が出力されません。
これは、変数iが3のとき、continueにより、continueより後の処理がスキップされたからです。
ちなみに、continueより前に実装されている、i++の処理は実行されるため、iはインクリメントされます。
- breakを使用すると、ループ処理を抜けることができる
- continueを使用すると、ループ処理をスキップすることができる
while、do-while以外のループ処理(for、forEach)
for文でのループ処理
for文を使用したループ処理は、次のように実装します。
- Kotlin
for(変数 in A..B) {
// ループ処理
}
A..Bの部分には、『0..4』のように、繰り返すレンジを指定します。
変数の部分には、任意の変数を指定します。
変数は、初回の繰り返し時には、レンジで指定した最小の値が格納されており、
繰り返されるたびにインクリメント(1ずつ増加)していきます。
for文についての詳しい解説は、以下の記事にまとめておりますので、詳しく知りたい方は、こちらの記事をご覧いただければと思います。
forEachでのループ処理
forEachを使用したループ処理は、次のように実装します。
- Kotlin
(A..B).forEach {
// ループ処理
}
for文の時と同様、A..Bの部分には、『0..4』のように、繰り返すレンジを指定します。
ただ、forEachの場合、レンジ指定よりも、ListやMapをループ処理させる場合で使用されることが多いです。
forEachについての詳しい解説は、以下の記事にまとめております。
まとめ
- whileは、while(条件式) { ループ処理 } と実装する
- do-whileは、do { ループ処理 } while(条件式) と実装する
- breakを使用すると、ループ処理を抜けることができる
- continueを使用すると、ループ処理をスキップすることができる
関連記事