Kotlin if、else 条件文
Kotlinでは、数学で使う論理条件をサポートしています:
- 未満: a < b
- 以下: a <= b
- より大きい: a > b
- 以上: a >= b
- 等しい: a == b
- 等しくない: a != b
これらの条件を使って、異なる条件に基づいて異なるアクションを実行できます。
Kotlinには以下の条件分岐があります:
if
を使用して、指定された条件がtrueの場合に実行されるコードブロックを指定するelse
を使用して、同じ条件がfalseの場合に実行されるコードブロックを指定するelse if
を使用して、最初の条件がfalseの場合にテストする新しい条件を指定するwhen
を使用して、複数の代替コードブロックを指定する
注意: Javaとは異なり、Kotlinではif..elseをステートメントとしても、式としても使用できます(変数に値を代入するための式として)。下のページの例を参照してください。
Kotlin if
条件がtrueの場合に実行されるコードブロックを指定するには、if
を使用します。
文法
if (condition) {
// 条件がtrueの場合に実行されるコードブロック
}
if
は小文字で書く必要があります。大文字(IfやIF)ではエラーが発生します。
例
if (20 > 18) {
println("20は18より大きい")
}
変数をテストすることもできます。
例
val x = 20
val y = 18
if (x > y) {
println("xはyより大きい")
}
例の説明
上記の例では、変数xとyを使用して、xがyより大きいかどうかをテストしています(>演算子を使用)。xが20でyが18なので、20が18より大きいことがわかり、「xはyより大きい」と画面に表示します。
Kotlin else
条件がfalseの場合に実行されるコードブロックを指定するには、else
を使用します。
文法
if (condition) {
// 条件がtrueの場合に実行されるコードブロック
} else {
// 条件がfalseの場合に実行されるコードブロック
}
例
val time = 20
if (time < 18) {
println("こんにちは。")
} else {
println("こんばんは。")
}
// 出力: "こんばんは。"
例の説明
上記の例では、time(20)が18より大きいため、条件がfalseになります。したがって、else条件に進み、”こんばんは”と画面に表示します。もしtimeが18未満だった場合、プログラムは”こんにちは”と表示します。
Kotlin else if
最初の条件がfalseの場合に、新しい条件を指定するにはelse if
を使用します。
文法
if (condition1) {
// condition1がtrueの場合に実行されるコードブロック
} else if (condition2) {
// condition1がfalseでcondition2がtrueの場合に実行されるコードブロック
} else {
// condition1とcondition2の両方がfalseの場合に実行されるコードブロック
}
例
val time = 22
if (time < 10) {
println("おはようございます。")
} else if (time < 20) {
println("こんにちは。")
} else {
println("こんばんは。")
}
// 出力: "こんばんは。"
例の説明
上記の例では、time(22)が10より大きいため、最初の条件はfalseです。次のelse if文の条件もfalseなので、else条件に進み、”こんばんは”と画面に表示します。ただし、もしtimeが14だった場合、プログラムは”こんにちは”と表示します。
Kotlinのif..else式
Kotlinでは、if..elseステートメントを式として使用することもできます(変数に値を代入して返す):
例
val time = 20
val greeting = if (time < 18) {
"こんにちは。"
} else {
"こんばんは。"
}
println(greeting)
ifを式として使用する場合は、else
も含める必要があります(必須)。
注意
ifに1つの文しかない場合は、中括弧{}
を省略できます。
例
fun main() {
val time = 20
val greeting = if (time < 18) "こんにちは。" else "こんばんは。"
println(greeting)
}
この例は、Javaの「三項演算子」(短縮形のif…else)と似ています。