エラー処理
CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 90/93。
チャレンジ
中級前のレッスンでは、「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()メソッドは、文字列を Double に変換できない場合でもクラッシュせず、nullを返します。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プレイグラウンド