Tugas 5 Simple Calculator

Nama: Dafarel Fatih Wirayudha
NRP: 5025211120
Kelas: PPB A


Pada tugas ini saya membuat aplikasi kalkulator sederhana yang bisa:

  • Menjumlahkan (+), mengurangkan (-), mengalikan (×), dan membagi (÷) dua angka.

Berikut adalah penjelasan kode dari aplikasi ini:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyCalculatorTheme {
Surface(modifier = Modifier.fillMaxSize()) {
CalculatorApp()
}
}
}
}
}
  • MainActivity adalah titik awal saat aplikasi dijalankan.
  • setContent {} digunakan untuk menampilkan tampilan berbasis Jetpack Compose.
  • MyCalculatorTheme membungkus UI agar sesuai tema (warna, font, dll).
  • Surface(...) adalah kontainer latar untuk tampilan.
  • CalculatorApp() adalah fungsi yang menampilkan tampilan kalkulator.
var number1 by remember { mutableStateOf("") }
var number2 by remember { mutableStateOf("") }
var result by remember { mutableStateOf<String?>(null) }
  • number1 dan number2 menyimpan nilai dari input pengguna.
  • result menyimpan hasil perhitungan.
  • remember dan mutableStateOf adalah bagian dari state management di Compose agar UI bisa berubah secara dinamis saat nilai berubah.
TextField(
value = number1,
onValueChange = { number1 = it },
label = { Text("Angka pertama") },
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
imeAction = ImeAction.Next
)
)
  • TextField digunakan untuk memasukkan angka.
  • keyboardType = KeyboardType.Number memastikan keyboard numerik muncul.
  • ImeAction mengatur tombol keyboard virtual (misal: Next, Done).
Button(onClick = {
result = calculate(number1, number2, "+")
focusManager.clearFocus()
}) {
Text("+")
}
  • Ketika tombol diklik, fungsi calculate() dijalankan.
  • result diperbarui dengan hasil operasi.
  • focusManager.clearFocus() digunakan agar keyboard ditutup setelah klik.
result?.let {
Text("Hasil: $it", style = MaterialTheme.typography.headlineMedium)
}
  • Jika result tidak null, maka hasil perhitungan ditampilkan dalam teks.
fun calculate(n1: String, n2: String, operator: String): String {
val num1 = n1.toDoubleOrNull()
val num2 = n2.toDoubleOrNull()

if (num1 == null || num2 == null) return "Input tidak valid"
if (operator == "/" && num2 == 0.0) return "Tidak bisa bagi 0"

val result = when (operator) {
"+" -> num1 + num2
"-" -> num1 - num2
"*" -> num1 * num2
"/" -> num1 / num2
else -> return "Operator tidak valid"
}

return result.toString()
}
  • Menerima input dalam bentuk String, lalu diubah ke Double.
  • Cek validasi input: apakah angka valid, dan hindari pembagian dengan nol.
  • Melakukan operasi sesuai operator.\
  • Hasil dikembalikan dalam bentuk String untuk ditampilkan.
Hasil:

Video Demo:

Link Source: GitHub


Comments

Popular posts from this blog

ETS

Tugas 7 Login Page

Tugas 6 Money Converter