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))}}}}}@Composablefun 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 :
- Penggunaan
remember+mutableStateOfagar UI bisa reactive terhadap perubahan data input. num1,num2→ input angka,operator→ operator matematika,result→ hasil perhitungan.Layout
Column(vertikal), dengan jarak antar item 12dp, dan padding luar 16dp.Input angka pertama dan kedua. Tipe data
String, akan dikonversi keDoublesaat dihitung.Menampilkan 4 tombol operator matematika. Ketika diklik, nilai
operatorakan berubah sesuai tombol.Coba konversi
num1&num2keDouble, kalau gagal: tampilkan error, kalau berhasil: lakukan operasi berdasarkanoperator.Jika
resulttidaknull, tampilkan hasilnya di layar.
Komentar
Posting Komentar