Kotlin

Kotlin - 입력 예외처리

내손은개발 🐾 2024. 3. 14. 20:39

입력에 대해 찾아보니 입력을 받기 위해 표준 라이브러리에서 제공하는 readLine()과 readln()이 있다.

사용했을때 차이점이 나타난다.

 

간단하게 보면 readLine()은 null값을 허용하는 String?타입으로 반환하지만 readln()은 non-null 타입이다.

fun main(){
    val name: String = readln()
    if (name.isEmpty()){
        println("잘못된 입력")
    }else {
        println(name)
    }
}

if문 사용

 

숫자를 입력할 때까지 무한반복해서 입력받기

fun main() {
    while(true){
        try{
            var num1 = readln().toInt()
            println(num1)
            break
        }catch (e:NumberFormatException){
            println("숫자가 아님.")
        }
    }
}

while문 안에 try catch문으로 숫자를 받을 때까지 반복하고 숫자를 받으면 받은 숫자를 출력하고 종료.

물론 null값도 무한 반복

 

 

더해서

1-3범위의 숫자만 받고 싶을 때는 ?

fun main() {
    while(true){
        try{
            var num1 = readln().toInt()
            if(num1 in 0..3){
                println(num1)
                break
            }else{
                println("1-3까지 숫자를 입력해주세요")
            }
        }catch (e:NumberFormatException){
            println("숫자가 아님.")
        }
    }
}

try문 안에 if조건문을 넣어주면 된다.

 


메서드에서 예외처리

fun checkNumber(): Int {
    var userInput: String?
    var number: Int?

    while(true) {
        print("숫자만 입력")
        userInput = readLine()
        number = userInput?.toIntOrNull()

        if(number != null) {
            return number
        } else {
            println("숫자!를 입력해주세요.")
        }
    }
}

사용

var inputNumber = CheckNumber()

 

2-3개는 if문을 쓰겠는데 범위가 넓다면 ?

  if (number !in 0..6) {
            println("0~6까지의 숫자만 입력")
        } else if (number != null) {
            return number
        } else {
            println("올바른 숫자를 입력해주세요")
        }

조건문 추가로 예외처리

'Kotlin' 카테고리의 다른 글

MVVM 강의 실습  (0) 2024.04.16