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)と似ています。