조건문을 통한 분기

OneTwoThree·2022년 7월 27일
0

부스트코스 코틀린

목록 보기
9/26

[부스트코스]조건문을 통한 분기

if-else문

수행할 문장이 1줄인 경우 {} 생략가능


if - else문 자체를 한 줄에 간략화 할 수 있다.

fun main() {
    val a = 1
    val b = 2
    val res = if (a>=b){
        println("a>=b")
        a //res=a
    }
    else {
        println("a<b")
        b//res=b
    }
    println(res)

}

변수에 if-else문을 이용해 할당하고 블럭과 함께 사용할 수 있다.
이 때 변수에 할당되는 값은 블럭의 마지막 식이다. 위의 예시에서는 if블록의 마지막 문장인 a와 else 블록의 마지막 문장인 b가 res에 할당된다.

fun main() {
    var score = 0
    var grade = 'N'

    println("input score : ")
    score = readLine()!!.toInt()

    grade = if (score>=90) 'A' else if (score >=80) 'B' else 'C'


    println("grdae : $grade")


}

readLine 콘솔 입력

readLine()은 콘솔 입력을 받기 위해 사용한다.
입력받은 내용은 String 취급이다. 따라서 toInt를 사용해준다.
또한 대상이 null이면 toInt()를 사용할 수 없으므로 !!를 사용해서 null이 아니라고 단정지었다. (무조건 문자열을 입력할 것이므로)

범위 연산자

  • 변수명 in 시작값..마지막값
  • 변수명 >= 시작값 && 변수명 <= 마지막값 과 같다
fun main() {
    var score = 0
    var grade = 'N'

    println("input score : ")
    score = readLine()!!.toInt()

    grade = if (score in 91..100) 'A'
    else if (score in 81..90) 'B'
    else 'c'

    println("grdae : $grade")


}

비교 연산자와 논리 연산자를 섞어 쓰면 귀찮고 불편하므로 범위 연산자를 사용하면 편리하다.

when 구문

switch-case의 간략한 버전이라고 생각하면 된다.


,를 이용해서 조건 2개를 연결할 수 있다.


함수의 반환값을 조건에 사용할 수 있다.
parseInt(s) == x면 일치함을 출력한다.


조건에 범위 연산자를 사용할 수 있다.
!를 앞에 붙이면 부정의 의미로 10..20 범위 외 일 때를 의미한다.


is 키워드를 이용해서 자료형을 조건으로 사용할 수 있다.
또한 when 구문을 이용해서 result 변수에 값을 넣고 있다.

fun main() {
   val score = readLine()!!.toInt()
   var grade : Char = when(score){
       in 90..100 -> 'A'
       in 80..89 -> 'B'
       else -> 'C'
   }
   println("score = $score grade = $grade")

}

grdae 변수에 when 구문을 이용해 값을 초기화한다.
when 구문 내부에서는 범위 연산자를 이용한다.


인자 없이 when 구문을 구성할 수 있다.
특정 인자에 제한 없이 다양한 조건과 실행문을 구성한다.


    var grade : Char = 'N'

    when {
        score in 90..100 -> grade = 'A'
        score in 80..99 -> grade = 'B'
        else -> grade = 'C'
    }
    println("score = $score grade = $grade")

조건 코드가 길어지지만, 사용할 변수가 2개 이상이라면 이 방법이 더 편리할 수 있다.

0개의 댓글