Menu
Coddy logo textTech

Gestión de errores

Parte de la sección Fundamentos del Journey de Kotlin de Coddy. Lección 90 de 93.

challenge icon

Desafío

Intermedio

En la lección anterior, implementaste la funcionalidad "Clear All". Ahora, añade validación de entrada para gestionar los casos en los que el usuario introduce un importe de gasto no válido.

Modifica tu programa para gestionar los errores al añadir gastos (opción 1):

  • Cuando el usuario introduzca un importe de gasto, utiliza toDoubleOrNull() para convertir la entrada de forma segura
  • Si la conversión devuelve null (entrada no válida), imprime Invalid amount! en lugar de añadir el gasto
  • Si la conversión tiene éxito, añade el gasto e imprime Expense added! como antes

Todas las demás opciones deben seguir funcionando como antes:

  • Opción 1: Añadir gasto (con validación)
  • Opción 2: Ver todos los gastos
  • Opción 3: Total y promedio
  • Opción 4: Borrar todos los gastos
  • Opción 5: Imprimir Goodbye! y salir
  • Opciones no válidas: Imprimir Invalid option

Formato de entrada:

Opciones del menú e importes de gastos como cadenas.

Formato de salida:

El menú, seguido de la respuesta adecuada para cada acción.

Ejemplo:

Si las entradas son 1, abc, 1, 25.0, 1, hello, 2 y 5, la salida debe ser:

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

Consejo: El método toDoubleOrNull() devuelve null si la cadena no se puede convertir en un Double, en lugar de provocar un error. Utiliza el operador Elvis o una comprobación de nulo para gestionar este caso.

Pruébalo tú mismo

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

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Kotlin