Tugas 6 Money Converter
Nama: Dafarel Fatih Wirayudha
NRP: 5025211120
Kelas: PPB A
Pada tugas kali ini saya membuat aplikasi money converter sederhana. Aplikasi ini menyediakan 10 mata uang yang bisa dipilih untuk mengkonversi jumlah rupiah yang diinputkan.
Berikut adalah penjelasan kode dari aplikasi ini:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MoneyConverterTheme {
Surface(modifier = Modifier.fillMaxSize()) {
MoneyConverterApp()
}
}
}
}
}
- onCreate: Dipanggil saat aplikasi diluncurkan.
- setContent: Menentukan isi UI menggunakan Jetpack Compose.
- MoneyConverterTheme: Menerapkan tema visual.
- MoneyConverterApp(): Fungsi utama yang membangun UI kalkulator konversi uang.
fun MoneyConverterApp()
- Fungsi utama aplikasi
var inputAmount by remember { mutableStateOf("") }
var result by remember { mutableStateOf<String?>(null) }
- inputAmount: Menyimpan input jumlah uang dalam bentuk string.
- result: Menyimpan hasil konversi mata uang yang akan ditampilkan.
val exchangeRates = mapOf(
"USD" to 0.000066,
"EUR" to 0.000061,
"JPY" to 0.0101,
"SGD" to 0.00009,
"SAR" to 0.00025,
"AED" to 0.00024,
"CNY" to 0.00047,
"KWD" to 0.000020,
"BHD" to 0.000026,
"GBP" to 0.000052
)
- Berisi pasangan "kode mata uang" → nilai tukar dari IDR ke mata uang asing.
TextField(
value = inputAmount,
onValueChange = { inputAmount = it },
label = { Text("Jumlah dalam IDR") },
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
singleLine = true
)
- Komponen untuk input angka dari user.
- keyboardType.Number memastikan hanya keyboard angka yang muncul.
result?.let {
Text("Hasil: $it", style = MaterialTheme.typography.headlineMedium)
Spacer(modifier = Modifier.height(16.dp))
}
- Menampilkan hasil konversi jika result tidak null.
- Tampil di atas tombol konversi, agar langsung terlihat.
exchangeRates.forEach { (currency, rate) ->
Spacer(modifier = Modifier.height(8.dp))
Button(
onClick = {
val idr = inputAmount.toDoubleOrNull()
if (idr != null) {
val converted = idr * rate
result = "%.4f $currency".format(converted)
} else {
result = "Input tidak valid"
}
},
modifier = Modifier.fillMaxWidth()
) {
Text("Konversi ke $currency")
}
}
- Menampilkan 10 tombol, masing-masing mewakili satu mata uang.
- Saat diklik:
- Mengambil angka dari inputAmount
- Mengalikan dengan nilai tukar rate
- Menyimpan hasilnya ke result dalam format %.4f
- Jika input invalid (kosong atau bukan angka), akan menampilkan pesan error
Hasil:

Comments
Post a Comment