Menu
Coddy logo textTech

טיפול בשגיאות

חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 90 מתוך 93.

challenge icon

אתגר

בינוני

בשיעור הקודם מימשת את הפונקציונליות של "Clear All". כעת, הוסף בדיקת תקינות של הקלט כדי לטפל במקרים שבהם המשתמש מזין סכום הוצאה לא תקין.

שנה את התוכנית שלך כך שתטפל בשגיאות בעת הוספת הוצאות (אפשרות 1):

  • כשהמשתמש מזין סכום הוצאה, השתמש ב־toDoubleOrNull() כדי להמיר את הקלט בבטחה
  • אם ההמרה מחזירה null (קלט לא תקין), הדפס Invalid amount! במקום להוסיף את ההוצאה
  • אם ההמרה מצליחה, הוסף את ההוצאה והדפס Expense added! כמו קודם

כל שאר האפשרויות צריכות להמשיך לפעול כמו קודם:

  • אפשרות 1: הוספת הוצאה (עם בדיקת תקינות)
  • אפשרות 2: הצגת כל ההוצאות
  • אפשרות 3: סך הכול וממוצע
  • אפשרות 4: מחיקת כל ההוצאות
  • אפשרות 5: הדפס Goodbye! וצא
  • אפשרויות לא תקינות: הדפס Invalid option

פורמט הקלט:

בחירות בתפריט וסכומי הוצאות כמחרוזות.

פורמט הפלט:

התפריט, ולאחריו התגובה המתאימה לכל פעולה.

דוגמה:

אם הקלטים הם 1, abc, 1, 25.0, 1, hello, 2 ו־5, הפלט צריך להיות:

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

רמז: המתודה toDoubleOrNull() מחזירה null אם אי אפשר להמיר את המחרוזת ל־Double, במקום לגרום לקריסה. השתמש באופרטור Elvis או בבדיקת null כדי לטפל במקרה הזה.

נסו בעצמכם

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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Kotlin אונליין