0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kotlin入門:制御構文

Last updated at Posted at 2020-02-22

間違いがあれば指摘していただけると幸いです。
Kotlinを簡単に実行するにはこちら
実際に打ち込んで検証するとより理解度が深まります。

実際に読んでみて良かった書籍について情報を発信していますので、
よろしければTwitterのフォローもお願いします。

if命令

構文(else ifやelseは任意)

if(条件式){
    処理
}else if(条件式){
    処理
}else{
    処理
}

Kotlinのifは文ではなく式なので値を返せます。

fun main() {
    var num = 100
    var msg = if(num == 100){
        "変数numは100である"
    }else if(num == 111){
        "変数numは111である"
  }else{
        "変数numは100でも111でもない"
    }
    println(msg)
}

実行結果は

変数num100である

となります。

①if式では必ず値を返さなければならないため、elseを省略することはできません。

elseを省略するとこのようなエラーが発生します。

'if' must have both main and 'else' branches if used as an expression

when...else命令

構文

when(条件となる値){
    条件となる値 ->{
        処理
    }
    else ->{
        処理
    }
}

式の値に応じて処理を分岐します。

fun main() {
    val point = 2
    when(point){
        1 ->{
            println(1)
        }
        2 ->{
            println(2)
        }
        else ->{
            println("else")
        }
    }
}

実行結果は以下の通りです。

2

条件となる値には複数の値や範囲値も指定可能

(,)カンマで複数の値を列挙したり、「in m...n」で範囲値を渡すこともできる。

fun main() {
    val point = 95
    when(point){
        100 ->{
            println(100)
        }
        99,98 ->{
            println("99または98")
        }
      in 90..97 ->{
            println("90から97の範囲")
        }
        else ->{
            println("else")
        }
    }
}

①の範囲値については後述します。
実行結果は以下の通りです。

90から97の範囲

is演算子

is演算子を使用すると値ではなく型で判定することができます。

fun main() {
    val name = "山田"
    when(name){
        is String ->{
            println(name)
        }
        else ->{
            println("else")
        }
    }
}

実行すると結果は以下の通りになります。

山田

型判定した後の式(変数)は該当する型とみなせるため、
それぞれの型に応じたメンバーを呼び出せます。

for命令

Kotlinのfor命令はJavaでいうところの拡張forに相当する構文が基本です。

基本となる構文

    for(変数 in 配列または範囲値){
        println(変数)
    }

入力例

fun main() {
    val list = arrayOf("山田","鈴木","田中")
    for(name in list){
        println(name)
    }
}

実行すると結果は以下の通りになります。

山田
鈴木
田中

範囲値

範囲演算子(..)を使用することでm~nの範囲を表現できる。

fun main() {
    val i = 5
    if(i in 1..10){
        println("1~10の範囲にある")
    }
}

実行すると以下の通りになります。

1~10の範囲にある
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?