Android Studio初学笔记-Day9-BMI计算器

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


<<:  [Day 16] Linter 管理 - 中央集权

>>:  Day 12单一子元素元件Single-child

Day25 ATT&CK for ICS - Collection(1)

Collection 攻击者会为了取得 ICS 环境中感兴趣的资料,进而使用许多技巧,透过监控的方式...

Day4 安装Vue

Vue的安装方式有很多种像我这次是使用CND的方式来使用Vue 首先呢我们可以先到Vue的网站 可以...

Day1. 用户体验设计三大类职能

Hi 大家好,我是Rson,一位在科技业的互动介面设计师。在过去的专案及产品经历中,累积了一些心得...

信任与安全感

前言 今天想跟大家讨论这个在团队内外之间都可能面对的「信任」问题。信任这件事,几乎大家都能理解它的重...

Vue 元件传递资料的命名坑与型别

最会伪装的就是变数,变来变去常让人分不清是变到哪里去了...根本是忍者! 这几天写的都是与元件相关...