Menu
CoddyTech

Xử lý lỗi

Thuộc phần Kiến thức nền tảng trong hành trình Kotlin của Coddy. Bài học 90 trên 93.

challenge icon

Thử thách

Trung bình

Trong bài học trước, bạn đã triển khai chức năng "Clear All". Bây giờ, hãy thêm bước xác thực đầu vào để xử lý trường hợp người dùng nhập số tiền chi tiêu không hợp lệ.

Sửa chương trình để xử lý lỗi khi thêm khoản chi (tùy chọn 1):

  • Khi người dùng nhập số tiền chi tiêu, hãy dùng toDoubleOrNull() để chuyển đổi đầu vào một cách an toàn
  • Nếu quá trình chuyển đổi trả về null (đầu vào không hợp lệ), hãy in ra Invalid amount! thay vì thêm khoản chi
  • Nếu chuyển đổi thành công, hãy thêm khoản chi và in ra Expense added! như trước

Các tùy chọn khác vẫn hoạt động như trước:

  • Tùy chọn 1: Thêm khoản chi (có xác thực)
  • Tùy chọn 2: Xem tất cả khoản chi
  • Tùy chọn 3: Tổng và trung bình
  • Tùy chọn 4: Xóa tất cả khoản chi
  • Tùy chọn 5: In ra Goodbye! và thoát
  • Tùy chọn không hợp lệ: In ra Invalid option

Định dạng đầu vào:

Các lựa chọn trong menu và số tiền chi tiêu dưới dạng chuỗi.

Định dạng đầu ra:

Menu, tiếp theo là phản hồi phù hợp cho mỗi thao tác.

Ví dụ:

Nếu đầu vào là 1, abc, 1, 25.0, 1, hello, 2 và 5, đầu ra sẽ là:

--- 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!

Gợi ý: Phương thức toDoubleOrNull() trả về null nếu không thể chuyển đổi chuỗi thành Double, thay vì làm chương trình bị lỗi. Hãy dùng toán tử Elvis hoặc kiểm tra null để xử lý trường hợp này.

Tự làm thử

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")
        }
    }
}

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Playground Kotlin