kotlin 「when」で範囲を指定して条件を指定する

kotlin 「when」で範囲を指定して条件を指定する

kotlinで、「when」で範囲を指定して条件を指定する手順を記述してます。「when」の中で「in」を使うことで可能です。

環境

  • OS windows11 home
  • java 19.0.1
  • kotlin 1.7.20-release-201

手順

kotlinで「when」を使用して、範囲を指定して条件を指定するには「in」を使用します。

when(引数) {
   in 値..値 -> 処理
   in 値..値 -> 処理
   else -> 処理
}

実際に、使用してみます。

fun main() {

    var n = 2
    when (n) {
        in 1..3 -> { println("nの値は1~3") } // nの値は1~3
        in 4..5 -> { println("nの値は4~5") }
        else -> { println("nの値は1~5以外") }
    }

}

判定されていることが確認できます。

優先順位

範囲が同じ場合は、先に記述されている条件が優先されます。

fun main() {

    var n = 2
    when (n) {
        in 1..3 -> { println("nの値は1~3") } // nの値は1~3
        in 2..5 -> { println("nの値は4~5") }
        else -> { println("nの値は1~5以外") }
    }

}

範囲を逆

範囲を逆にしてしまうと、結果がおかしくなるので注意が必要です。

fun main() {

    var n = 2
    when (n) {
        in 3..1 -> { println("nの値は1~3") } 
        in 5..4 -> { println("nの値は4~5") }
        else -> { println("nの値は1~5以外") } // nの値は1~5以外
    }

}

逆にする場合は、「downTo」を使用します。

fun main() {

    var n = 2
    when (n) {
        in 3 downTo 1 -> { println("nの値は1~3") }  // nの値は1~3
        in 5 downTo 4 -> { println("nの値は4~5") }
        else -> { println("nの値は1~5以外") }
    }

}

変数を使用

以下のように、変数を使用することも可能です。

fun main() {

    var n = 2
    var start = 1
    var end = 3
    when (n) {
        in start..end -> { println("nの値は1~3") } // nの値は1~3
        in 4..5 -> { println("nの値は4~5") }
        else -> { println("nの値は1~5以外") }
    }

}