iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

android studio 30天初學筆記系列 第 9

Android Studio初學筆記-Day9-BMI計算器

  • 分享至 

  • xImage
  •  

BMI計算器

今天來個簡單的綜合應用,將前面所介紹的東西放在一起,結合設計出一個BMI計算器。這次介面大多與之前介紹的差不多,主要會放在講MainActivity.java裡程式碼的部分。

介面設計

https://ithelp.ithome.com.tw/upload/images/20210907/20139136C6YsNOZvD8.png
由於都是前幾篇內容的元件,這裡就不多贅述程式碼,可以當作練習試著做看看喔!/images/emoticon/emoticon33.gif
今天的重點則跳到MainActivity.java

程式碼

public class MainActivity extends AppCompatActivity {
    EditText height;     //宣告變數,型態為EditText(全域變數)
    EditText weight;     //宣告變數,型態為EditText(全域變數)
    Button bt1;     //宣告變數,型態為Button(全域變數)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        height=(EditText)findViewById(R.id.et1);     //取得輸入物件(身高)
        weight=(EditText)findViewById(R.id.et2);     //取得輸入物件(體重)
    }
    public void calculate(View v){              //按鈕事件
        if(!("".equals(height.getEditableText().toString())) ||
           !("".equals(weight.getEditableText().toString()))){              
            //判斷輸入是否為空值
            float fh=Float.parseFloat(height.getEditableText().toString());      
                //將輸入值(身高)的字串,轉換會為float
            float fw=Float.parseFloat(weight.getEditableText().toString());      
                //將輸入值(體重)的字串,轉換會為float
            float fresult;                     //宣告變數,型態為float(區域變數)
            TextView result=(TextView)findViewById(R.id.tx5);      //取得物件,放置BMI結果
            fh=fh/100;
            fh=fh*fh;
            NumberFormat nf=NumberFormat.getInstance();       //設定數字格式,並宣告物件nf
            nf.setMaximumFractionDigits(2);                   //小數點設定顯示最多後兩位
            fresult=fw/fh;
            result.setText(nf.format(fresult)+"");            //將算出來的BMI格式化
            TextView dia=(TextView)findViewById(R.id.tx6);    //取得物件,放置診斷結果

            if(fresult<18.5)                                  //判斷BMI的數值
                dia.setText("體重過輕");
            else if(fresult>=18.5&&fresult<24)
                dia.setText("正常範圍");
            else if(fresult>=24&&fresult<27)
                dia.setText("過重");
            else if(fresult>=27&&fresult<30)
                dia.setText("輕度肥胖");
            else if(fresult>=30&&fresult<35)
                dia.setText("中度肥胖");
            else if(fresult>=35)
                dia.setText("重度肥胖");
        }
    }
}
  1. 如同前一篇Button中介紹的取的物件的方法及變數宣告,來取得各個EditText和TextView的元件。
  2. 判斷輸入框的EditText中是否為空值,這裡使用判斷的方法是用是equals(),用來判斷呼叫的字串和在equals()內的字串是否相同,此函數回傳的值是一個boolean值。
  3. 如果有輸入值的話則透過變數fh,fw(型態為float)把值存下來,在存值上有個要注意的點,因為從EditText中取出來的值型態是Text,所以這邊先用toString()把取得的值改成String,再用paraseFloat()把括號內的String改成Float,因為paraseFloat()括號內的值需要為String所以才會有這些轉換的部分。
  4. NumberFormat是負責對數字的格式規定,我選擇的是getInstance(),效果是每三個位數會分隔 如:123,456,789。也可以依需求查詢需要的格式用法喔!
  5. setMaximumFractionDigits(2)這是設定小數點顯示最多後兩位,把計算的值存入並用format()套用格式顯示即可。

以上算是這幾天的段落整理,希望各位能熟悉這些元件,將對之後寫程式大有幫助。
https://ithelp.ithome.com.tw/upload/images/20210907/20139136DrbKSe6Bxf.png
今天的就降到這裡,謝謝大家!/images/emoticon/emoticon41.gif


上一篇
Android Studio初學筆記-Day8-元件客製化
下一篇
Android Studio初學筆記-Day10-RadioButton
系列文
android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言