【Kotlin】ifで条件分岐する書き方 - whenと合わせてサンプルコードで解説
コーディングをする上で必須となるif文について、Kotlinのサンプルコードと合わせて解説します。
コーディングをする上で必須となるif文について、Kotlinのサンプルコードと合わせて解説します。
スキルアップ
2020/12/11 UP
- プログラミング
- SE資格・スキル
- Kotlin
if文は〇〇のときと△△のときに処理を分けたいときなどの条件分岐で活用されます。プログラムを書く上で基本の構文でもあり、プログラム初心者が書き方を学ぶためにも使われます。
条件は簡単なものから複雑なものまで幅広くカスタマイズでき、入れ子構造まで使えると細かく条件を分けていける便利な書き方です。プログラム言語によって書き方は異なりますが、考え方は同じなので、1つマスターすると応用していけます。
ここでは、コーディングをする上で必須となるif文について、Kotlinのサンプルコードと合わせて解説します。
Kotlinのif文とは
Javaと同様に、if、else if、elseの3つを使って書いていきます。if(条件?){処理}の形で簡単に書けるのが特徴です。条件?以外のときに有効な処理を記載するにはelseを使います。条件?以降を足していきたいときはelse ifを使って条件を分岐させていきます。
Kotlinのifは文ではなく式
Kotlinではifを式の1つとして区別しているので、変数にif文を代入することなどができます。次のサンプルコードは変数msgに格納されるメッセージがif文の条件判定によって変わります。変数countの値が8より小さければif、そうでなければelseが変数msgに格納され、出力されるコードです。
var count = 12 var msg = if (count < 8){ "if" } else { "else" } println(msg)
三項演算子がない
Javaでは使うことができる三項演算子がKotlinにはありません。しかしif文が式として扱われるのでKotlinはif文で三項演算子を使うのと同じ処理を簡単に書くことができます。
重ねて、式では最後に評価された値が戻ってきます。returnなども書く必要がなくなってくるので、省略されているものが分かるまでに少し時間がかかるかもしれません。慣れてくると記載するコードの量が少ないのでコーディングのスピードアップにつながります。
Kotlinで使える比較演算子一覧
Kotlinでも他のプログラム言語と同様に、以下6パターンの比較演算子を使うことができます。
a<b | aはbより小さい |
---|---|
a<=b | aはb以下 |
a>b | aはbより大きい |
a>=b | aはb以上 |
a==b | aとbは等しい |
a!=b | aとbは等しくない |
Kotlinで使える論理演算子一覧
Kotlinで使える論理演算子は以下の3つです。アンドとパイプは2つ記載が必要なので注意しましょう。
a&&b | aかつb |
---|---|
a||b | aまたはb |
!a | aの反対(※aがtrueなら!aはfalse) |
Kotlinのif文の書き方
ここからはKotlinでのif文の書き方を、コードサンプルを使いながら解説していきます。
if文の基本形
もし(条件が当てはまっていたら){処理}を実行します。条件と処理でかっこの種類が違うので注意しましょう。
次のサンプルコードでは、変数textが「テスト」であれば「終了」を表示します。
var text = "テスト" if (text == "テスト"){ // 終了を表示 println("終了") }
なお、スラッシュ2つの表記はコメントアウトです。コメントのためプログラムの実行に影響はありません。コードを分かりやすくするための表記であり、ここでは表示される文字列を明確にしています。
if elseの形
if elseは(条件)に当てはまらなかった場合の処理をelseの後に書くことができます。
次のサンプルコードでは、変数textが「テスト2」のとき、「テスト2」と表示し、それ以外は「テスト2ではない」を表示するコードです。
冒頭で変数textには「テスト1」が代入されているので、このコードは「テスト2ではない」が出力されます。
var text = "テスト1" if (text == "テスト2"){ println(text) } else { println("テスト2でない") }
if、else if、elseの形
else ifを使うことで(条件)を複数指定することができます。
次のサンプルコードでは、変数numが「10」のとき「数字は10」、「100」のとき「数字は100」、それ以外のときは「10でも100でもない」が出力されます。
冒頭で変数numには「100」が代入されているので、else ifの結果である「数字は100」が出力されます。
var num = 100 if (num == 10){ println("数字は10") } else if (num == 100){ println("数字は100") } else { println("10でも100でもない") }
else ifが複数の場合
else ifは複数つないでいくこともできます。
次のサンプルコードでは、変数numが『10』のとき『数字は10』、『100』のとき『数字は100』、『1000』のとき『数字は1000』、それ以外のとき『10でも100でも1000でもない』が出力されます。
冒頭で変数numには「1000」が代入されているので、このコードで出力されるのは「数字は1000」になります。
var num = 1000 if (num == 10) { println("数字は10") } else if (num == 100) { println("数字は100") } else if (num == 1000) { println("数字は1000") } else { println("10でも100でも1000でもない") }
andやorを利用した複数条件の書き方
ifの条件の中にandやorを入れれば、より複雑な条件判定で分岐させることもできます。
次のサンプルコードでは、変数numが5以上かつ2で割れるときに『numは5以上の偶数』を出力します。
なお、%2は2で割った余りを出力する計算式です。2で割って余りが0と一致するときなので、該当する数字は偶数になります。
var num = 10 if (num >= 5 && num % 2 == 0) { println("numは5以上の偶数") } else { println("その他の数") }
入れ子(ネスト)させる場合の書き方
if文の中でif文を使うような入れ子構造のプログラムを書くこともできます。入れ子が増えると条件式が複雑になるので、重複や漏れがないかをきちんと確認し、意図通り動くプログラムを書きましょう。
サンプルコードでは、まず変数numが0以上100以下であるかを判定します。今回はnumの値が10なので入れ子の中に入り、numが2で割れるかの判定を行います。2で割って余りが0なら「numは偶数」、余りが0でなければ「numは奇数」が出力されます。
なお、0以上100以下の範囲の数字ではない場合は、入れ子の中へは入らず、外のelseに記載のある「numは範囲外」が出力されます。
var num = 10 if (num >= 0 && num <= 100){ if (num % 2 == 0){ println("numは偶数") } else { println("numは奇数") } } else { println("numは範囲外") }
Kotlinのwhen文との違い
whenもifと同様に条件分岐を処理する文です。条件が複数ある場合や、引数を簡潔に評価したいときにwhenを使うのが一般的といわれています。
whenもifと同様、条件に該当した場合は -> の後の処理が行われ、どれにも該当しなかった場合はelseの後の処理が行われます。ifで表現できることはwhenでも表現できるため、どちらを使うかは見やすさやプロジェクトの方針の問題です。
以下のサンプルコードはwhenで3つの条件分岐をしたものです。10のとき、50のとき、100のとき、それ以外の4パターンに分かれることが容易に分かり、条件が増えたときにwhenの方が見やすい書き方となります。
var text = "100" var ans : String = when (text){ "10" -> "numは10" "50" -> "numは50" "100" -> "numは100" else -> "numはそれ以外の数" } println(ans) // numは100が出力される
Kotlinでifは式であることに注意しよう!
ifはどの言語でも使用する基本的なプログラムなので覚えておいて損はありません。別の言語でif文を書いたことがあれば、比較的理解しやすい構文でもあります。
Kotlinの場合、ifが文ではなく式なので、条件判定できるものの幅が広がっています。慣れないと戸惑うかもしれませんが、難しい書き方ではない上に、使いこなせると書く処理を減らせるので便利です。
条件分岐の使い方をマスターして基本的なKotlinのプログラムが書けるようになりましょう。