Genta Hirauchi

最終更新日:2020/01/26

【Kotlin基礎】Kotlinでwhile、do-whileによるループ処理を実装する方法

  • Kotlinでwhile、do-whileによるループ処理を実装する方法が知りたい。
  • breakやcontinueの使い方が知りたい。
  • Javaで実装した場合との違いが知りたい。
  • 他のループ処理についても知りたい。

そんな方、いらっしゃいませんか?

Kotlinでwhile、do-whileでループ処理を実装する方法をわかりやすく解説致しております。

サンプルコードによる解説や、重要ポイントのまとめもありますので、
この記事を読めば、すぐにwhile、do-whileが使えるようになると思います。

目次

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の使い方で解説致します。

Point
  • 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が出力されます。

Point
  • 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はインクリメントされます。

Point
  • breakを使用すると、ループ処理を抜けることができる
  • continueを使用すると、ループ処理をスキップすることができる

while、do-while以外のループ処理(for、forEach)

for文でのループ処理

for文を使用したループ処理は、次のように実装します。

  • Kotlin
for(変数 in A..B) {
   // ループ処理
}

A..Bの部分には、『0..4』のように、繰り返すレンジを指定します。

変数の部分には、任意の変数を指定します。
変数は、初回の繰り返し時には、レンジで指定した最小の値が格納されており、 繰り返されるたびにインクリメント(1ずつ増加)していきます。

for文についての詳しい解説は、以下の記事にまとめておりますので、詳しく知りたい方は、こちらの記事をご覧いただければと思います。

【Kotlin基礎】Kotlinでfor文によるループ処理を実装する方法

サンプルコードを交えた解説で、for文による基本的なループ処理や、until、step、downToの使い方、ListやMapをループさせる方法を紹介致します。

forEachでのループ処理

forEachを使用したループ処理は、次のように実装します。

  • Kotlin
(A..B).forEach {
   // ループ処理
}

for文の時と同様、A..Bの部分には、『0..4』のように、繰り返すレンジを指定します。

ただ、forEachの場合、レンジ指定よりも、ListやMapをループ処理させたいい場合で使用することが多いです。

forEachについての詳しい解説は、以下の記事にまとめておりますので、こちらもご参照ください。

【Kotlin基礎】KotlinでforEachによるループ処理を実装する方法

本記事では、forEachによるListやMapループ処理の実装方法をサンプルコードでわかりやすく解説しております。

まとめ

  • whileは、while(条件式) { ループ処理 } と実装する
  • do-whileは、do { ループ処理 } while(条件式) と実装する
  • breakを使用すると、ループ処理を抜けることができる
  • continueを使用すると、ループ処理をスキップすることができる