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文を中心に解説してきました。ここに書いてあるものはどれもよく使う上基礎なので必ずマスターしておきましょう!
それでは!!