Menyesuaikan Kalkulasi agar bisa memilih Standar Perhitungan BMI

This commit is contained in:
202310715297 RAIHAN ARIQ MUZAKKI 2025-11-06 22:45:42 +07:00
parent eb0720c592
commit 59db5c2b0c
2 changed files with 15 additions and 8 deletions

View File

@ -50,6 +50,7 @@ import androidx.compose.material3.Switch
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@ -90,6 +91,12 @@ fun BMICalculatorLayout() {
var weightInput by remember { mutableStateOf("") }
var unitUSC by remember { mutableStateOf(false) }
// Reset Nilai Input
LaunchedEffect(unitUSC) {
heightInput = ""
weightInput = ""
}
val BmiHeight = heightInput.toDoubleOrNull() ?: 0.0
val BmiWeight = weightInput.toDoubleOrNull() ?: 0.0
val bmi = calculateBMI(BmiHeight, BmiWeight, unitUSC)
@ -111,7 +118,7 @@ fun BMICalculatorLayout() {
.align(alignment = Alignment.Start)
)
EditNumberField(
label = R.string.height,
label = if (unitUSC == true) R.string.heightInch else R.string.heightCm,
leadingIcon = R.drawable.number,
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
@ -122,7 +129,7 @@ fun BMICalculatorLayout() {
modifier = Modifier.padding(bottom = 32.dp).fillMaxWidth(),
)
EditNumberField(
label = R.string.weight,
label = if (unitUSC) R.string.weightPound else R.string.weightKg,
leadingIcon = R.drawable.number,
keyboardOptions = KeyboardOptions.Default.copy(
keyboardType = KeyboardType.Number,
@ -206,12 +213,10 @@ private fun calculateBMI(BmiHeight: Double, BmiWeight: Double, unitUSC: Boolean)
}
val heightInMeter = BmiHeight/100 // konversi centimeter ke meter
val heightInInch = BmiHeight * 0.3937 // konversi centimeter ke inci
val weightInPound = BmiWeight * 2.2046 // konversi berat badan ke pound (lbs)
var bmi = BmiWeight / heightInMeter.pow(2)
if (unitUSC) {
bmi = 703 * (weightInPound / heightInInch.pow(2))
if (unitUSC == true) {
bmi = 703 * (BmiWeight / BmiHeight.pow(2))
}
val df = DecimalFormat("#.#")

View File

@ -17,8 +17,10 @@
<resources>
<string name="app_name">BMI Calculator</string>
<string name="calculate_bmi">Calculate BMI</string>
<string name="height">Tinggi Badan</string>
<string name="weight">Berat Badan</string>
<string name="heightCm">Tinggi Badan (cm)</string>
<string name="weightKg">Berat Badan (kg)</string>
<string name="heightInch">Tinggi Badan (inch)</string>
<string name="weightPound">Berat Badan (lbs)</string>
<string name="use_usc">Gunakan Unit USC (lbs/in)?</string>
<string name="bmi_calculation">BMI Anda: %s</string>
<string name="bmi_category">Kategori: %s</string>