【Kotlin入門】for, whileを学んでループ処理をマスターしよう!


Kotlinのfor文の使い方を学びたい
範囲やMapのfor文での使い方も知りたい
while分も学んで繰り返し処理をマスターしたい

こんにちは!エンジニアのかいです。Kotlinをこれから始めようとしている人、もしくは始めたての人であればプログラミングの基本中の基本であるfor文について上記のような悩みを抱えている人も多いのではないでしょうか?

そこで、本日はKotlin初心者の方を対象にfor文の基礎的な使い方やwhile分の使い方を説明して繰り返し処理の基本をマスターしていただければと思います。

この記事はこんな人のために書きました。

  • Kotlinをはじめたばかりなのでfor文の書き方がわからない
  • 様々なパターンのfor文の使い方を学びたい
  • while文の書き方も知っておきたい

目次

for文の基本的な使い方

さて、それでは実際にfor文の例を見て使い方を学んでいきましょう!

fun main(args: Array<String>) {
    val fruits = arrayListOf<String>("ばなな", "りんご", "ぶどう")
    for (fruit in fruits){
        println(fruit)
    }
}
ばなな
りんご
ぶどう

Kotlinではデフォルトのfor文は他言語でいうところのforeach文に当たります。

なので構文として、以下のようになります。

for(変数 in 配列){
   処理
}

配列の値を一つ一つ変数として与えて、for文内でその変数を利用することができます。もちろんこの変数のスコープはfor文内なのでfor文の外では使えません。

Range構文を使ってみよう

for文で回す時はRange構文を使いたい時もありますよね。Rangeとは範囲のことで、言語によって、1..3という風に書いたりrange関数を使ってrange(3)と書いたりします。Kotlinでは以下のようにします。

fun main(args: Array<String>) {
    for (i in 1..3){
        println(i)
    }

    var count = 3
    for (i in 1..count){
        println(i)
    }
}
1
2
3
1
2
3

ちなみに以下のようにstepを使うと刻み幅を指定できます。

fun main(args: Array<String>) {
    for (i in 1..10 step 2){
        println(i)
    }
}
1
3
5
7
9

mapをfor文で回してみよう

次はmapをfor文で回してみましょう。mapとは他言語ではハッシュや辞書、連想配列などと言いいますが、要はkeyとvalueという値を管理するものです。{key: value}と言った形で管理されているのを見たことがある人も多いのではないでしょうか?

fun main(args: Array<String>) {
    val person = mapOf<String, Int>("taro" to 20, "kota" to 25, "yuka" to 21)
    for((k,v) in person){
        println("$k は $v 才")
    }
}
taro は 20 才
kota は 25 才
yuka は 21 才

mapをfor文で回してkeyが一致したvalueを取り出すなどもよくやりますね。

fun main(args: Array<String>) {
    val person = mapOf<String, Int>("taro" to 20, "kota" to 25, "yuka" to 21)
    for(map in person){
        if(map.key ==  "yuka"){
            println("yuka は ${map.value} 才")
        }
    }
}
yuka は 21 才

for文でインデックスを取り出してみよう

さて、次はインデックスと一緒にfor文を回していきましょう。インデックスとは添え字のことで、配列に振ってある番号のことです。valueのインデックスを取得したいという場面も実際の現場では多々ありますよね。

そんな時はindeicsを使いましょう。

fun main(args: Array<String>) {
    val fruits = arrayListOf<String>("ばなな", "りんご", "ぶどう")
    for (fruit in fruits.indices){
        println("${fruits[fruit]}は${fruit}番目")
    }
}
ばななは0番目
りんごは1番目
ぶどうは2番目

あれ、なんか思ったのと違うな?と感じた人もいるでしょう。変数にインデックスが格納されて、配列[変数]でそのvalueが取れるのはわかったけど、valueと、インデックスは別の変数に入れた方が直感的で良いという人もいますよね。

大丈夫です。そんな時はwithIndexを使いましょう。

fun main(args: Array<String>) {
    val fruits = arrayListOf<String>("ばなな", "りんご", "ぶどう")
    for ((i, fruit) in fruits.withIndex()){
        println("${fruit}は${i}番目")
    }
}
ばななは0番目
りんごは1番目
ぶどうは2番目

すっきりですね。

while文の使い方をみてみよう

それでは最後に同じ繰りかえり処理であるwhile文についてもみておきましょう。とはいえwhileに癖はなく例文を見ていただければ書き方が理解できると思います。

fun main(args: Array<String>) {
    var i = 0
    while(i <= 5){
        println(i)
        i++
    }
}
0
1
2
3
4
5

do-while文は以下の通りです。

fun main(args: Array<String>) {
    var i = 0
    do {
        println(i)
        i++
    } while (i<=5)
}
0
1
2
3
4
5

まとめ

本日は、繰りかえり処理についてfor文を中心に解説してきました。ここに書いてあるものはどれもよく使う上基礎なので必ずマスターしておきましょう!

それでは!!

この記事を書いた人

日向徹かこよすぎか

kaikaikai8217@gmail.com

目次