使用者在輸入資料的時候,難免會出錯,現在我們寫好的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();
}
}
};
當我們還沒輸入數字就按下按鈕的時候,
就會出現以下訊息提示使用者。
哈囉大大,我按照你的步驟一步一步寫到這一個章節,但是我加入了 catch(Exception obj)
{
Toast.makeText(MainActivity.this, "要先輸入身高體重喔!", Toast.LENGTH_SHORT).show();
}
這個部分後,有出現BUG的狀態,不太了解,想請您幫我看一下,感恩
catch後面為什麼換行了, 所以他有錯誤訊息嗎?
出現unexpected token這個錯誤訊息,我一樣附圖請大大幫過目 感恩
有一篇可以 參考看看
可能是少做了什麼動作,
好像亂碼也會得到這個錯誤訊息...
應該是try catch 的格式沒弄好而已