Tugas 5 PPB A

Nama: Meylina Tesa Hapsari

NRP: 5025221149

Kelas: PPB A


          

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
CalculatorTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
CalculatorUI(
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
}

@Composable
fun CalculatorUI(modifier: Modifier = Modifier) {
var num1 by remember { mutableStateOf("") }
var num2 by remember { mutableStateOf("") }
var operator by remember { mutableStateOf("+") }
var result by remember { mutableStateOf<String?>(null) }

Column(modifier = Modifier
.padding(16.dp)
.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
OutlinedTextField(
value = num1,
onValueChange = { num1 = it },
label = { Text("First Number") }
)

OutlinedTextField(
value = num2,
onValueChange = { num2 = it },
label = { Text("Second Number") }
)

Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
listOf("+", "-", "*", "/").forEach {
Button(onClick = { operator = it }) {
Text(it)
}
}
}

Button(onClick = {
val n1 = num1.toDoubleOrNull()
val n2 = num2.toDoubleOrNull()

result = if (n1 == null || n2 == null) {
"Invalid input"
} else {
when (operator) {
"+" -> (n1 + n2).toString()
"-" -> (n1 - n2).toString()
"*" -> (n1 * n2).toString()
"/" -> if (n2 != 0.0) (n1 / n2).toString() else "Cannot divide by zero"
else -> "Invalid operator"
}
}
}) {
Text("Calculate")
}

result?.let {
Text("Result: $it", style = MaterialTheme.typography.headlineMedium)
}
}
}
Penjelasan :
  1. Penggunaan remember + mutableStateOf agar UI bisa reactive terhadap perubahan data input.
  2. num1, num2 → input angka, operator → operator matematika, result → hasil perhitungan.

  3. Layout Column (vertikal), dengan jarak antar item 12dp, dan padding luar 16dp.

  4. Input angka pertama dan kedua. Tipe data String, akan dikonversi ke Double saat dihitung.

  5. Menampilkan 4 tombol operator matematika. Ketika diklik, nilai operator akan berubah sesuai tombol.

  6. Coba konversi num1 & num2 ke Double, kalau gagal: tampilkan error, kalau berhasil: lakukan operasi berdasarkan operator.

  7. Jika result tidak null, tampilkan hasilnya di layar.

Komentar

Postingan populer dari blog ini

EAS PPB A

Tugas 13 PPB A

Tugas 1 PPB A