이 포스팅은 고돈호 님의 이것이 안드로이드다 with 코틀린(한빛미디어)을 기반으로 작성되었습니다.

1.1 if 문

다음의 예시를 살펴보자

package kr.co.kibeom.basicsyntax

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() { // 새로운 블록의 시작
    override fun onCreate(savedInstanceState: Bundle?) { // 4 칸 공백
        super.onCreate(savedInstanceState) // 이전 4칸의 공백에 추가로 4칸의 공백 즉 8칸 공백
        setContentView(R.layout.activity_main)

        var myNumber = "1, 2, 3, 4, 5, 6"
        var yourNumber = "1, 2, 3, 4, 5, 6"

        if(myNumber == yourNumber) {
            Log.d("checkIf", "myNumber와 yourNumber가 일치합니다.")
        }
        else {
            Log.d("checkIf", "myNumber와 yourNumber가 다릅니다.")
        }
    }
}

myNumber와 yourNumber가 일치하므로 if문이 실행되어 myNumber와 yourNumber가 일치한다는 메시지가 뜨는 것을 확인할 수 있다. 이는 다음의 Log를 통해 알 수 있다.

반대로 일치하지 않다면 else문 안의 Log가 출력이 되는것을 알 수 있다.


1.2 if문 & else if문

이번에는 if문과 else if문의 차이점을 알아보자.

package kr.co.kibeom.controlflow1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var a = "abc"
        var b = "abcde"
        var c = "abcdefg"

        // if 문 두번 사용
        if (a.length < b.length) {
            Log.d("ControlFlow", "1: a는 b보다 길이가 작습니다.")
        }
        if (a.length < c.length) {
            Log.d("ControlFlow", "1: a는 c보다 길이가 작습니다.")
        }

        // else if문 사용
        if (a.length < b.length) {
            Log.d("ControlFlow", "2: a는 b보다 길이가 작습니다.")
        } else if (a.length < c.length) {
            Log.d("ControlFlow", "2: a는 c보다 길이가 작습니다.")
        }
    }
}

이 코드를 실행하면 다음의 결과가 나오는 것을 확인할 수 있다.

즉 이 결과를 통해 if문의 경우 2개의 if문이 모두 실행된것을 확인할 수 있고 if문 else if문의 경우 if문이 실행되면 else if문이 실행이 안되는 것을 확인할 수 있다.


1.3 그 밖의 if문 활용

if문의 조건식 결과를 변수에 대입할 수 있다. 예시는 다음과 같다.

package kr.co.kibeom.controlflow1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var goalOfSon = 3
        var goalOfKim = 5

        var winner = if (goalOfSon < goalOfKim) {
            Log.d("SCORE_Result", "Kim이 Son보다 많은 골을 넣었습니다.")
            goalOfKim
        } else {
            Log.d("SCORE_Result", "Son이 Kim보다 많은 골을 넣었습니다.")
            goalOfSon
        }

        Log.d("SCORE_Result", "가장 많은 골을 넣은 사람이 넣은 goal은 ${winner} 입니다.")
    }
}

이를 실행하면 다음의 Log를 확인할 수 있다. 즉 if문의 결과가 변수 winner에 대입이 되는것을 확인할 수 있다.


2.1 When 조건문

when 조건문은 다른 언어에서의 switch문과 비슷하다. 구조는 다음과 같다.

when (파라미터) {
    비교값 -> {
        // 변숫값이 비교 값과 같다면 이 영역이 실행됩니다.
    }
}

이것을 예시로 보면 다음과 같다.

package kr.co.kibeom.controlflow1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var age = 25
        when (age) {
            23 -> {
                Log.d("when", "나이가 23살 입니다.")
            }
            24 -> {
                Log.d("when", "나이가 24살 입니다.")
            }
            25 -> {
                Log.d("when", "나이가 25살 입니다.")
            }
            26 -> {
                Log.d("when", "나이가 26살 입니다.")
            }
        }
    }
}

실행 결과의 Log를 확인해보면 다음과 같다.

위의 예시에서 콤마를 통해 범위를 비교할 수 있다. 이를 예시로 확인하면 다음과 같다.

package kr.co.kibeom.controlflow1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var age = 25
        when (age) {
            23, 24 -> {
                Log.d("when", "나이가 23살 또는 24살 입니다.")
            }
            25, 26 -> {
                Log.d("when", "나이가 25살 또는 26살 입니다.")
            }
            26, 27 -> {
                Log.d("when", "나이가 26살 또는 27살 입니다.")
            }
        }
    }
}

역시 실행 후 Log를 확인하면 다음과 같다.

in을 통해 범위값을 비교할 수도 있다. 이는 다음과 같다.

package kr.co.kibeom.controlflow1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var age = 25
        when (age) {
            in 10..19 -> {
                Log.d("when", "당신의 나이는 10대 입니다.")
            }
            !in 10..19 -> {
                Log.d("when", "당신의 나이는 10대가 아닙니다.")
            }
        }
    }
}

실행한 후 Log를 확인해보면 다음과 같다.


 

'안드로이드 앱 개발' 카테고리의 다른 글

6. 함수  (0) 2021.12.20
5. 반복문  (0) 2021.12.19
4. 배열과 컬렉션  (0) 2021.12.14
2. 변수  (0) 2021.12.12
1. 코틀린의 기본적인 문법  (0) 2021.12.12

+ Recent posts