由於昨天腦袋過於混亂,程式寫得很亂,各位應該看得很痛苦吧,我很抱歉QQ。
今天的第一件事就是把 class 的內容完善一點,以下是 class code:
class Bmi(){
private var _height: Double = 0.0
private var _weight: Double = 0.0
private var _bmi: Double = 0.0
public fun reset(){
_height = 0.0
_weight = 0.0
_bmi = 0.0
}
public fun setHeight(height:String){
_height = height.toDouble()
}
public fun setWeight(weight:String){
_weight = weight.toDouble()
}
public fun getBmi(): String{
return _bmi.toString()
}
public fun calculate(){
_height = pow(changeUnit(_height))
_bmi = _weight/_height
}
public fun changeUnit(value: Double): Double{
return value/100
}
public fun pow(value: Double): Double{
return value*value
}
}
其實寫法跟選號機差不多,只是因為多了 class 的部分,按下按鈕後會觸發 calculateBMI 和showBMI 這兩個 methon。
class MainActivity : AppCompatActivity() {
private val bmi = Bmi() // 宣告一個變數,方便呼叫 class
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button3)
button.setOnClickListener{ // 偵測按鈕觸發
calculateBMI()
showBMI()
}
}
private fun calculateBMI(){
/.../
}
private fun showBMI(){
/.../
}
}
private fun calculateBMI(){
val height:TextView = findViewById(R.id.editTextText)
val weight:TextView = findViewById(R.id.editTextText2)
bmi.reset() // 重設 BMI,這個步驟可有可無,看個人習慣
bmi.setHeight(height.text.toString()) // input height
bmi.setWeight(weight.text.toString()) // input weight
bmi.calculate() // 計算 BMI
}
private fun showBMI(){
val resultText: TextView = findViewById(R.id.textView)
resultText.text = bmi.getBmi() // output bmi
}
public fun roundToTwoDecimalPlaces(){
_bmi = (_bmi * 100.0).roundToInt()/100.0
}
private fun showBMI(){
val resultText: TextView = findViewById(R.id.textView) // 跟剛剛 Button 是一樣的
bmi.roundToTwoDecimalPlaces()
resultText.text = bmi.getBmi()
}
android:hint="身高(cm)" // 原本是 android:text="身高(cm)"
android:hint="體重(kg)" // 原本是 android:text="體重(kg)"
好的,今天的資訊量過於龐大,因此偷懶的星星決定再拖延一天,相信在中秋節當天做完 BMI 博士也是一件很有趣的事情,你們說是吧!
希望看完這篇文章的各位今天都可以搭上返鄉列車,反正我是沒搭上啦 ˊˇˋb。
下一篇真的真的會認真做完 BMI 博士喔。
Kotlin - toDouble
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-double.html
在 Kotlin 中用 2 位小數四捨五入浮點數或雙精度數
https://www.techiedelight.com/zh-tw/round-up-a-float-or-a-double-with-2-decimal-places-in-kotlin/
Android Studio 菜鳥筆記本-Day 14-元件介紹-Toast
https://ithelp.ithome.com.tw/articles/10246269