Menangani error
Termasuk bagian Dasar-Dasar dalam perjalanan Kotlin di Coddy. Pelajaran 90 dari 93.
Tantangan
SedangDi pelajaran sebelumnya, kamu menerapkan fungsi "Clear All". Sekarang, tambahkan validasi input untuk menangani kasus saat pengguna memasukkan jumlah pengeluaran yang tidak valid.
Ubah programmu agar menangani error saat menambahkan pengeluaran (opsi 1):
- Saat pengguna memasukkan jumlah pengeluaran, gunakan
toDoubleOrNull()untuk mengonversi input dengan aman - Jika konversi menghasilkan
null(input tidak valid), cetakInvalid amount!alih-alih menambahkan pengeluaran - Jika konversi berhasil, tambahkan pengeluaran dan cetak
Expense added!seperti sebelumnya
Semua opsi lainnya harus tetap berfungsi seperti sebelumnya:
- Opsi
1: Tambahkan pengeluaran (dengan validasi) - Opsi
2: Lihat semua pengeluaran - Opsi
3: Total dan rata-rata - Opsi
4: Hapus semua pengeluaran - Opsi
5: CetakGoodbye!lalu keluar - Opsi tidak valid: Cetak
Invalid option
Format input:
Pilihan menu dan jumlah pengeluaran dalam bentuk string.
Format output:
Menu, diikuti respons yang sesuai untuk setiap tindakan.
Contoh:
Jika inputnya adalah 1, abc, 1, 25.0, 1, hello, 2, dan 5, outputnya seharusnya:
--- 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!Petunjuk: method toDoubleOrNull() menghasilkan null jika string tidak dapat dikonversi menjadi Double, alih-alih menyebabkan program mengalami crash. Gunakan operator Elvis atau pemeriksaan null untuk menangani kasus ini.
Coba sendiri
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")
}
}
}Semua pelajaran di Dasar-Dasar
4Operator Bagian 1
Operator AritmetikaOperator ModuloPenugasan GabunganOperator PerbandinganRingkasan: Matematika Sederhana7Dasar input dan output
Fungsi PrintlnTemplate stringInput ReadLineKonversi Tipe DataRingkasan: Tahun hingga PensiunRingkasan: Benar atau Salah10Fungsi
Deklarasikan FungsiParameter dan ArgumenNilai KembalianArgumen BernamaNilai DefaultFungsi Ekspresi TunggalUlasan: Fungsi SigmaUlasan: Fungsi Validasi5Operator Bagian 2
Operator Logika Bagian 1Operator Logika Bagian 2Operator Logika Bagian 3Ternary dengan Ekspresi ifRangkuman: Logika Sederhana8Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input11FizzBuzz dengan Sentuhan Unik
Gambaran Umum GameFungsi FizzBuzz3Kemungkinan Null
Apa Itu Keamanan NullTipe yang Dapat Bernilai NullOperator Pemanggilan AmanOperator ElvisDasar Tantangan FungsiPenegasan Bukan NullRangkuman: Akses Aman6Pengambilan Keputusan
Pernyataan IfIf - ElseIf sebagai EkspresiEkspresi WhenWhen dengan RentangUlasan - Kalkulator Sederhana9Perulangan
For loopWhile loopDo-while loopBreakContinueRentang dalam loopLoop BersarangRingkasan: FaktorialRingkasan: Input Dinamis12Dasar List
List vs MutableListMengakses ElemenMengubah ListMethod ListPair dan TripleRekap: List ProdukRekap: List Terbalik15Pelacak Pengeluaran Harian
Ikhtisar ProyekKeluar dari ProgramLatihan sendiri: Playground Kotlin