Menu
Coddy logo textTech

오류 처리

Coddy Kotlin 여정의 기초 섹션에 포함된 레슨. 93개 중 90번째.

challenge icon

챌린지

중급

이전 수업에서는 "Clear All" 기능을 구현했습니다. 이제 사용자가 유효하지 않은 지출 금액을 입력하는 경우를 처리하도록 입력 유효성 검사를 추가하세요.

지출을 추가할 때(옵션 1) 오류를 처리하도록 프로그램을 수정하세요:

  • 사용자가 지출 금액을 입력하면 toDoubleOrNull()을 사용하여 입력값을 안전하게 변환하세요.
  • 변환 결과가 null(유효하지 않은 입력)이면 지출을 추가하는 대신 Invalid amount!를 출력하세요.
  • 변환에 성공하면 이전과 같이 지출을 추가하고 Expense added!를 출력하세요.

다른 모든 옵션은 이전과 동일하게 작동해야 합니다:

  • 옵션 1: 지출 추가(유효성 검사 포함)
  • 옵션 2: 모든 지출 보기
  • 옵션 3: 합계 및 평균
  • 옵션 4: 모든 지출 삭제
  • 옵션 5: Goodbye!를 출력하고 종료
  • 유효하지 않은 옵션: Invalid option 출력

입력 형식:

메뉴 선택과 지출 금액을 문자열로 입력합니다.

출력 형식:

메뉴와 각 작업에 해당하는 응답을 출력합니다.

예시:

입력이 1, abc, 1, 25.0, 1, hello, 2, 5인 경우 출력은 다음과 같습니다:

--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Expense added!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Enter expense amount:
Invalid amount!
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Your expenses:
- $25.0
--- Expense Tracker ---
1. Add Expense
2. View All Expenses
3. Total and Average
4. Clear All
5. Exit
Choose an option:
Goodbye!

힌트: toDoubleOrNull() 메서드는 문자열을 Double로 변환할 수 없는 경우 프로그램을 중단하는 대신 null을 반환합니다. 이 경우를 처리하려면 Elvis 연산자 또는 null 검사를 사용하세요.

직접 해보기

fun main() {
    val expenses = mutableListOf<Double>()
    
    while (true) {
        println("--- Expense Tracker ---")
        println("1. Add Expense")
        println("2. View All Expenses")
        println("3. Total and Average")
        println("4. Clear All")
        println("5. Exit")
        println("Choose an option:")
        
        val choice = readLine()
        
        if (choice == "1") {
            println("Enter expense amount:")
            val amount = readLine()!!.toDouble()
            expenses.add(amount)
            println("Expense added!")
        } else if (choice == "2") {
            if (expenses.isEmpty()) {
                println("No expenses recorded.")
            } else {
                println("Your expenses:")
                for (expense in expenses) {
                    println("- \$$expense")
                }
            }
        } else if (choice == "3") {
            if (expenses.isEmpty()) {
                println("No expenses recorded.")
            } else {
                val total = expenses.sum()
                val average = total / expenses.size
                println("Total: \$$total")
                println("Average: \$$average")
            }
        } else if (choice == "4") {
            expenses.clear()
            println("All expenses cleared!")
        } else if (choice == "5") {
            println("Goodbye!")
            break
        } else {
            println("Invalid option")
        }
    }
}

기초의 모든 레슨

직접 연습해 보세요: Kotlin 플레이그라운드