언어/Kotlin

Kotlin : 제어문 if 와 when

해리누나 2022. 6. 17. 01:51
728x90
반응형

1. If

저번에 쓰여진 코드를 다시 보자.

    var currentBottleContent = 600
    var currentGlassContent = 50
    val maxGlassContent = 130
 
    val toBeFilled = maxGlassContent - currentGlassContent  //채워져야 할 양
    currentGlassContent += toBeFilled
    currentBottleContent -= toBeFilled

여기서 눈치챘겠지만 이 코드엔 문제가 있다. 코드를 보면 무조건 잔은 채워지고, 그 채워진 만큼 병 속의 물의 양이 줄어드는데, 만일 병에 있던 물의 양이 그 채워져야 할 양보다 적다면, 성립할 수가 없게 된다.

병에 있던 물의 양이 50ml 였다면.. 결과는 다음과 같을 것이다.

결과

잔의 물은 채워져있지 말아야 하는데 채워져있고, 병 속 물의 양은 마이너스값이 되어버린다.

 

여기서 우리는 병의 물의 양이 잔을 채울 만큼 충분히 있을 경우에만 잔의 물이 다 채워진다랑  그렇지 않을 경우엔 그냥 병의 물 만큼만 잔에 채워준다 라는 두개의 상황을 나눠서 생각하게 된다.

 

이렇게 상황을 나눠야 할 때 If 를 사용하면 된다.

/*Syntax of if...else*/

if (condition) {
   // codes to run if condition is true
}
else {
  // codes to run if condition is false
}

 

fun main (args : Array <String>) {

    var currentBottleContent = 50
    var currentGlassContent = 50
    val maxGlassContent = 130

    val toBeFilled = maxGlassContent - currentGlassContent  //잔에 채워져야 할 양

    if(currentBottleContent >= toBeFilled){ //상황1. 병의 물이 잔을 가득 채울 만큼 충분
        currentGlassContent += toBeFilled
        currentBottleContent -= toBeFilled
    }else{                                  //상황2. 충분하지 않음 
        currentGlassContent += currentBottleContent
        currentBottleContent = 0
    }

    println("현재 잔의 물의 양은 $currentGlassContent ml입니다." )
    println("현재 병의 남은 물의 양은 $currentBottleContent ml입니다." )

}

결과

자바나 다른 프로그래밍 언어들과 달린 코틀린에서 if 문은 값을 반환할 수가 있다.

 

예)

import kotlin.random.Random

fun main (args : Array <String>) {

    val a = Random.nextInt(0,25) //0~25의 숫자들 중 한 수가 변수 a에 할당된다.
    val b = Random.nextInt(0,25)

    val bigger = if (a > b) a else b
    
    /* 8번줄은 이렇게 쓰는 거랑 같음.
    val bigger : Int
    
    if( a > b){
    	max = a
    }else{
        max = b
    }
    */

    println("$a 와 $b 중 더 큰 수는 $bigger.")
    
}

 

fun main(args: Array<String>) {

    val number = 0

    val result = if (number > 0) "양수"
    else if (number < 0) "음수"
    else  "0"
        
    println("number is $result")
}

 

 

2. When

코틀린에서 when 키워드는 Pattern-Matching을 담당하며 java의 스위치문과 비슷하다.

 

예)

fun main(args: Array<String>) {
    val a = 12
    val b = 5

    println("+,-,*,/ 중 하나를 입력하세요")
    val operator = readLine()

    when (operator) {
        "+" -> println("$a + $b = ${a + b}")
        "-" -> println("$a - $b = ${a - b}")
        "*" -> println("$a * $b = ${a * b}")
        "/" -> println("$a / $b = ${a / b}")
        else -> println("$operator 는 유효하지 않는 연산자입니다.")
    }
    
}

 

fun main(args: Array<String>) {

     val age : UInt = 23u

     val ageGroup = when (age) {
         in 0u..1u -> "아기"
         in 2u..6u -> "아이"
         in 7u..13u -> "어린이"
         in 14u..19u -> "청소년"
         else -> "어른"
     }

     println(ageGroup)
}

 

fun main(args: Array<String>) {

    val month = Random.nextInt(1,12)
    
    val season = when (month) {
    	12, 1, 2 -> "겨울"
    	3, 4, 5 -> "봄"
        6, 7, 8 -> "여름"
        9, 10, 11 -> "가을"
        else -> "-"
    }

	println(seaseon)
}

 

 

 

 

출처:

내용: 학교 교수님 (Christian Kohls) 강의,

         https://www.programiz.com/kotlin-programming/if-expression

728x90
반응형

'언어 > Kotlin' 카테고리의 다른 글

Kotlin : 객체 (Object)  (0) 2022.06.24
Kotlin : 함수 선언과 호출  (0) 2022.06.18
Kotlin : 변수 var 과 val  (0) 2022.06.16
Kotlin 기초 : 자료형 (Data type)  (0) 2022.06.15
Kotlin 기초 : 표현식 (Expression)과 문 (Statement)  (0) 2022.06.12