Menu
CoddyTech

Menangani error

Termasuk bagian Dasar-Dasar dalam perjalanan Kotlin di Coddy. Pelajaran 90 dari 93.

challenge icon

Tantangan

Sedang

Di pelajaran sebelumnya, kamu menerapkan fungsi "Clear All". Sekarang, tambahkan validasi input untuk menangani kasus saat pengguna memasukkan jumlah pengeluaran yang tidak valid.

Ubah programmu agar menangani error saat menambahkan pengeluaran (opsi 1):

  • Saat pengguna memasukkan jumlah pengeluaran, gunakan toDoubleOrNull() untuk mengonversi input dengan aman
  • Jika konversi menghasilkan null (input tidak valid), cetak Invalid amount! alih-alih menambahkan pengeluaran
  • Jika konversi berhasil, tambahkan pengeluaran dan cetak Expense added! seperti sebelumnya

Semua opsi lainnya harus tetap berfungsi seperti sebelumnya:

  • Opsi 1: Tambahkan pengeluaran (dengan validasi)
  • Opsi 2: Lihat semua pengeluaran
  • Opsi 3: Total dan rata-rata
  • Opsi 4: Hapus semua pengeluaran
  • Opsi 5: Cetak Goodbye! lalu keluar
  • Opsi tidak valid: Cetak Invalid option

Format input:

Pilihan menu dan jumlah pengeluaran dalam bentuk string.

Format output:

Menu, diikuti respons yang sesuai untuk setiap tindakan.

Contoh:

Jika inputnya adalah 1, abc, 1, 25.0, 1, hello, 2, dan 5, outputnya seharusnya:

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

Petunjuk: method toDoubleOrNull() menghasilkan null jika string tidak dapat dikonversi menjadi Double, alih-alih menyebabkan program mengalami crash. Gunakan operator Elvis atau pemeriksaan null untuk menangani kasus ini.

Coba sendiri

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

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Kotlin