Tugas 3.1

Run Settings
LanguageKotlin
Language Version
Run Command
import java.text.DecimalFormat fun main(args: Array<String>) { judul() infoketentuan() infokatalog() var nama: String var jumlahBeli: Int var kodeBarang: MutableList<Int> = mutableListOf() // Memastikan input nama pembeli valid print("Nama Pembeli: ") nama = readLine() ?: "" // Memastikan nama tidak kosong while (nama.isEmpty()) { println("Nama tidak boleh kosong. Silakan coba lagi.") print("Nama Pembeli: ") nama = readLine() ?: "" } // Menginput barang yang dibeli var continueShopping = true while (continueShopping) { print("Jumlah Beli: ") val jumlahBeliInput = readLine() try { val jumlahBeli = jumlahBeliInput?.toInt() ?: throw NumberFormatException() if (jumlahBeli > 0) { // Memasukkan kode barang ke dalam daftar for (i in 0 until jumlahBeli) { while (true) { print("Data Ke-${i + 1} - Pilih Kode [1/2/3]: ") val kodeInput = readLine()?.toIntOrNull() if (kodeInput != null && kodeInput in 1..3) { kodeBarang.add(kodeInput) // Menambah kode barang ke daftar break } else { println("Kode tidak valid, ulangi input!") } } } } else { println("Jumlah beli harus lebih dari 0.") } } catch (e: NumberFormatException) { println("Input jumlah beli tidak valid. Silakan coba lagi.") } // Tanya apakah user ingin melanjutkan belanja print("Apakah Anda ingin menambah barang lagi? (y/n): ") val input = readLine() if (input?.toLowerCase() != "y") { continueShopping = false } } garis(50) tampilkanStruk(nama, kodeBarang) } // Function Not Return Value (Without Parameter) fun judul() { println("===================================") println(" Tugas Kotlin 3.1 ") println("===================================") } // Function Not Return Value (Without Parameter) fun infoketentuan() { println("Ketentuan:") println("1. Harus terdapat Range") println("2. Harus terdapat Struktur IF dan When") println("3. Harus terdapat Looping While, Do While, For") println("4. Harus terdapat Function Not Return Value (With Parameter)") println("5. Harus terdapat Function Not Return Value (Without Parameter)") println("6. Harus terdapat Function Return Value (With Parameter)") println("7. Harus terdapat Function Return Value (Without Parameter)") println("8. Harus terdapat Function untuk Format Ribuan") garis(50) } // Function Not Return Value (Without Parameter) fun infokatalog() { println("| ASICS Official Shop |") println("-------------------------------------") println("| Kode | Tipe | Harga |") println("-------------------------------------") println("| 1 | ASICS Swift FF Standard | Rp 1.750.000 |") println("| 2 | ASICS GEL-GAME 9 | Rp 1.200.000 |") println("| 3 | ASICS Upcourt 5 Standard | Rp 850.000 |") garis(50) } // Function Not Return Value (With Parameter) fun garis(panjang: Int) { repeat(panjang) { print("-") } println() } // Function Return Value (With Parameter) fun getHarga(kode: Int): Int { return when (kode) { // Struktur When 1 -> 1750000 2 -> 1200000 3 -> 850000 else -> 0 } } // Function Return Value (With Parameter) fun getNamaBarang(kode: Int): String { return when (kode) { // Struktur When 1 -> "ASICS Swift FF Standard" 2 -> "ASICS GEL-GAME 9" 3 -> "ASICS Upcourt 5 Standard" else -> "Tidak Diketahui" } } // Function Not Return Value (With Parameter) fun tampilkanStruk(nama: String, kodeBarang: MutableList<Int>) { println("Terima kasih $nama telah berbelanja di ASICS Official Shop") println("Berikut data belanjaan Anda:") garis(50) println("| No | Tipe | Harga |") println("------------------------------------------------") var totalBayar = 0 // Looping For (Menggunakan "withIndex()") for ((index, kode) in kodeBarang.withIndex()) { val namaBarang = getNamaBarang(kode) // Function Return Value (With Parameter) val harga = getHarga(kode) // Function Return Value (With Parameter) totalBayar += harga println("| ${index + 1} | $namaBarang | Rp ${formatRupiah(harga)} |") // Function untuk Format Ribuan } garis(50) println("Total Bayar: Rp ${formatRupiah(totalBayar)}") // Function untuk Format Ribuan println() println("Nama : $nama") println("Email : irsyadpurba.fst@uia.ac.id") } fun formatRupiah(angka: Int): String { val formatter = DecimalFormat("#,###") return formatter.format(angka) }
Editor Settings
Theme
Key bindings
Full width
Lines