Menu
Coddy logo textTech

Gestion des erreurs

Fait partie de la section Fondamentaux du Journey Kotlin de Coddy. Leçon 90 sur 93.

challenge icon

Défi

Moyen

Dans la leçon précédente, vous avez implémenté la fonctionnalité "Clear All". Maintenant, ajoutez une validation des entrées pour gérer les cas où l’utilisateur saisit un montant de dépense invalide.

Modifiez votre programme pour gérer les erreurs lors de l’ajout de dépenses (option 1) :

  • Lorsque l’utilisateur saisit un montant de dépense, utilisez toDoubleOrNull() pour convertir l’entrée en toute sécurité
  • Si la conversion renvoie null (entrée invalide), affichez Invalid amount! au lieu d’ajouter la dépense
  • Si la conversion réussit, ajoutez la dépense et affichez Expense added! comme auparavant

Toutes les autres options doivent continuer à fonctionner comme auparavant :

  • Option 1 : Ajouter une dépense (avec validation)
  • Option 2 : Afficher toutes les dépenses
  • Option 3 : Total et moyenne
  • Option 4 : Supprimer toutes les dépenses
  • Option 5 : Afficher Goodbye! et quitter
  • Options invalides : Afficher Invalid option

Format d’entrée :

Les choix du menu et les montants des dépenses sous forme de chaînes.

Format de sortie :

Le menu, suivi de la réponse appropriée pour chaque action.

Exemple :

Si les entrées sont 1, abc, 1, 25.0, 1, hello, 2 et 5, la sortie doit être :

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

Indice : La méthode toDoubleOrNull() renvoie null si la chaîne ne peut pas être convertie en Double, au lieu de provoquer un plantage. Utilisez l’opérateur Elvis ou une vérification de nullité pour gérer ce cas.

Essayez vous-même

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

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Playground Kotlin