カテゴリー
Kotlin言語

ゼロから始めるAndroidアプリ(Kotlin編)Unit1 – 4 第3回:Kotlinで条件を使う

Android Developers > スタートガイド > Kotlin と Android をゼロから学ぶ > Unit1 – Kotlin を用いた Android の基本Unit1-4 第3回 の内容をまとめたものです(翻訳ではありません)


Unit1 – 4 の 第3回

第3回の内容は以下の通りです。

  • 当たりが出るサイコロアプリを作るために、当たりを判定して処理を変えるKotlinプログラムを作成します
  • 今回の内容はアプリのUI画面には関係がありません。なので、動作テストではKotlinプログラムを単体で実行します。結果はコンソールに出力して確認します

具体的には次のようなレッスンです。

  • if と else , else if を使った処理を書いてみる
  • > , < , == を使って値を比較する
  • when を使って同じ処理を書いてみる

Step1 の Kotlinコード

  • 当たりの目、出た目はコードの中であらかじめ設定しておく
  • 設定した値に応じて、異なるメッセージを表示してみる

まずは if 文の練習ですね

fun main() {
    val num = 4
    if (num > 4) {
        println("The variable is greater than 4")
    } else if (num == 4) {
        println("The variable is equal to 4")
    } else {
        println("The variable is less than 4")
    }
}
  • if , else , else if を使った条件判断
    • 条件判断には > , < , == , >= , <= などが使える
    • 条件判断(evaluating the condition)の結果は true か false のいずれかになるBoolean型(真偽型)
  • 条件判断などによって変化する処理の流れを control flow(制御フロー)という

Step2 の Kotlinコード

サイコロの目をランダムに返すクラスを作ります

クラス名は Dice にしますね

  • サイコロの目を決める Dice クラスを追加
  • Dice クラスにはランダムな目を返す roll() メソッドを実装
fun main() {
    val myFirstDice = Dice(6)
    val diceRoll = myFirstDice.roll()
    println("Your ${myFirstDice.numSides} sided dice rolled ${diceRoll}!")
}

class Dice (val numSides: Int) {
    fun roll(): Int {
        return (1..numSides).random()
    }
}

今度は出た目に応じて違ったメッセージが表示されるようにしてみます

当たりは 4 にしちゃいますね

fun main() {
    val myFirstDice = Dice(6)
    val rollResult = myFirstDice.roll()
    val luckyNumber = 4

    if (rollResult == luckyNumber) {
        println("You win!")
    } else if (rollResult == 1) {
        println("So sorry! You rolled a 1. Try again!")
    } else if (rollResult == 2) {
        println("Sadly, you rolled a 2. Try again!")
    } else if (rollResult == 3) {
        println("Unfortunately, you rolled a 3. Try again!")
    } else if (rollResult == 4) {
        println("No luck! You rolled a 4. Try again!")
    } else if (rollResult == 5) {
        println("Don't cry! You rolled a 5. Try again!")
    } else {
        println("Apologies! you rolled a 6. Try again!")
    }
}

class Dice (val numSides: Int) {
    fun roll(): Int {
        return (1..numSides).random()
    }
}
  • if , else if , else を使ったサイコロの目ごとの振り分け処理

Step3 の Kotlinコード

when を使って書き替えてみます

実行結果はまったく同じなんですね

fun main() {
    val myFirstDice = Dice(6)
    val rollResult = myFirstDice.roll()
    val luckyNumber = 4

    when (rollResult) {
        luckyNumber -> println("You won!")
        1 -> println("So sorry! You rolled a 1. Try again!")
        2 -> println("Sadly, you rolled a 2. Try again!")
        3 -> println("Unfortunately, you rolled a 3. Try again!")
        4 -> println("No luck! You rolled a 4. Try again!")
        5 -> println("Don't cry! You rolled a 5. Try again!")
        6 -> println("Apologies! you rolled a 6. Try again!")
    }
}

class Dice (val numSides: Int) {
    fun roll(): Int {
        return (1..numSides).random()
    }
}