Menu
Coddy logo textTech

Gestione degli errori

Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 90 di 93.

challenge icon

Sfida

Medio

Nella lezione precedente hai implementato la funzionalità "Clear All". Ora aggiungi la convalida dell'input per gestire i casi in cui l'utente inserisce un importo di spesa non valido.

Modifica il programma per gestire gli errori durante l'aggiunta delle spese (opzione 1):

  • Quando l'utente inserisce un importo di spesa, usa toDoubleOrNull() per convertire l'input in modo sicuro
  • Se la conversione restituisce null (input non valido), stampa Invalid amount! invece di aggiungere la spesa
  • Se la conversione riesce, aggiungi la spesa e stampa Expense added! come prima

Tutte le altre opzioni devono continuare a funzionare come prima:

  • Opzione 1: Aggiungi una spesa (con convalida)
  • Opzione 2: Visualizza tutte le spese
  • Opzione 3: Totale e media
  • Opzione 4: Cancella tutte le spese
  • Opzione 5: Stampa Goodbye! ed esci
  • Opzioni non valide: Stampa Invalid option

Formato dell'input:

Scelte del menu e importi delle spese come stringhe.

Formato dell'output:

Il menu, seguito dalla risposta appropriata per ogni azione.

Esempio:

Se gli input sono 1, abc, 1, 25.0, 1, hello, 2 e 5, l'output dovrebbe essere:

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

Suggerimento: Il metodo toDoubleOrNull() restituisce null se la stringa non può essere convertita in un Double, invece di generare un errore. Usa l'operatore Elvis o un controllo dei valori null per gestire questo caso.

Provalo tu

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

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Kotlin