iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
2
Software Development

[Andriod] Andriod Studio 從入門到進入狀況系列 第 23

[Day 22] 我的第一個Android程式 - BMI程式設計(十三) 錯誤處理

使用者在輸入資料的時候,難免會出錯,現在我們寫好的BMI程式中,沒有對使用者可能的輸入錯誤作處理。當我們在 體重 或是 身高 欄位中未輸入數字就先按下 計算BMI 按鈕,因為在計算BMI時取不到值,整個程式就會崩潰了。
在此我們使用了try ... catch 語句作錯誤處理,利用Toast原件來通知使用者輸入有誤

在原本的程式裡面,修改按鈕的點擊事件如下:
MainActivity.java

private OnClickListener calcBMI = new OnClickListener() {
    @Override
    public void onClick(View v) {
        try
        {
            DecimalFormat nf = new DecimalFormat("0.00");
            //身高
            double height = Double.parseDouble(num_height.getText().toString())/100;
            //體重
            double weight = Double.parseDouble(num_weight.getText().toString());
            //計算出BMI值
            double BMI = weight / (height*height);

            //結果
            show_result.setText(getText(R.string.bmi_result) + nf.format(BMI));

            //建議
            if(BMI > 25) //太重了
                show_suggest.setText(R.string.advice_heavy);
            else if(BMI < 20) //太輕了
                show_suggest.setText(R.string.advice_light);
            else //剛剛好
                show_suggest.setText(R.string.advice_average);
        }
        catch(Exception obj)
        {
            Toast.makeText(MainActivity.this, "要先輸入身高體重喔!", Toast.LENGTH_SHORT).show();
        }
    }
};

當我們還沒輸入數字就按下按鈕的時候,
就會出現以下訊息提示使用者。
https://ithelp.ithome.com.tw/upload/images/20181028/20105694yaxi2Mf3IV.png


上一篇
[Day 21] 我的第一個Android程式 - BMI程式設計(十二) Toast介面元件
下一篇
[Day 23] 我的第一個Android程式 - BMI程式設計(十四) 加入新活動的畫面
系列文
[Andriod] Andriod Studio 從入門到進入狀況33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
熊坦克
iT邦新手 5 級 ‧ 2019-02-13 11:01:42

哈囉大大,我按照你的步驟一步一步寫到這一個章節,但是我加入了 catch(Exception obj)
{
Toast.makeText(MainActivity.this, "要先輸入身高體重喔!", Toast.LENGTH_SHORT).show();
}
這個部分後,有出現BUG的狀態,不太了解,想請您幫我看一下,感恩
https://ithelp.ithome.com.tw/upload/images/20190213/20112953BVD5cSpKoX.jpg

看更多先前的回應...收起先前的回應...
小魚 iT邦大師 1 級 ‧ 2019-02-13 13:04:05 檢舉

catch後面為什麼換行了, 所以他有錯誤訊息嗎?

熊坦克 iT邦新手 5 級 ‧ 2019-02-13 13:32:11 檢舉

出現unexpected token這個錯誤訊息,我一樣附圖請大大幫過目 感恩https://ithelp.ithome.com.tw/upload/images/20190213/20112953PapOMYtREo.jpg

小魚 iT邦大師 1 級 ‧ 2019-02-14 14:03:46 檢舉

有一篇可以 參考看看
可能是少做了什麼動作,
好像亂碼也會得到這個錯誤訊息...

應該是try catch 的格式沒弄好而已

我要留言

立即登入留言