Android 台灣中文網

標題: EditText問題 [打印本頁]

作者: ricky52_be7    時間: 2012-4-1 19:33
標題: EditText問題
我自己制了一個BMI的程式,
但不知為什麼,
沒有打字去EditText
之後OnClick後會彈程式
作者: george310909    時間: 2012-4-1 20:01
方便貼一下您的程式碼嗎?
作者: ricky52_be7    時間: 2012-4-1 20:26
本帖最後由 ricky52_be7 於 2012-4-1 20:30 編輯
george310909 發表於 2012-4-1 20:01
方便貼一下您的程式碼嗎?


package bmi.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.EditText;

public class BmiActivity extends Activity {
    /** Called when the activity is first created. */
        private TextView output, output2;
        private Button start;
        private EditText input, kgInput;
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        output = (TextView)findViewById(R.id.output);
        output2 = (TextView)findViewById(R.id.output2);
        start = (Button)findViewById(R.id.start);
        input = (EditText)findViewById(R.id.input);
        kgInput = (EditText)findViewById(R.id.kgInput);
        
        
        start.setOnClickListener(newListener);
    }
private Button.OnClickListener newListener = new Button.OnClickListener() {
    public void onClick(View v) {
            double meter = Double.parseDouble(input.getText().toString());
        double kg = Double.parseDouble(kgInput.getText().toString());
            double m2 = (double)meter/100*(double)meter/100;
            double BMI = (double)kg/(double)m2;
           output.setText("BMI="+BMI+"");
           if(BMI < 18.5){
                   output2.setText("體重過輕: BMI < 18.5");
           }else if(BMI >= 18.5 && BMI < 24){
                   output2.setText("正常範圍: 18.5 ≦ BMI <24");
           }else if(BMI >= 24 && BMI < 27){
                   output2.setText("體重過重: 24 ≦ BMI < 27");
           }else if(BMI >= 27 && BMI < 30){
                   output2.setText("輕度肥胖: 27 ≦ BMI < 30");
           }else if(BMI >=30 && BMI <35){
                   output2.setText("中度肥胖: 30 ≦ BMI < 35");
           }else if(BMI >= 35)
                   output2.setText("重度肥胖: BMI ≧ 35");
           }
};
}
作者: george310909    時間: 2012-4-1 20:40
你沒有輸入值去EditText
卻強制用getText()
這時getText()會回傳null值給你
但是呢
null值不能轉成double
所以有NumberFormatException(不能轉成數字的Exception)
詳細狀況你看看上一次我回你的Button監聽事件
我就已經幫你寫上了
作者: ricky52_be7    時間: 2012-4-1 21:15
george310909 發表於 2012-4-1 20:40
你沒有輸入值去EditText
卻強制用getText()
這時getText()會回傳null值給你

那我想問ArithmeticException是什麼意思?
try和catch又是什麼?
對不起!我是新手,我在研究如何寫APPS,不懂JAVA
作者: george310909    時間: 2012-4-1 21:26
ArithmeticException我目前所知的是用在除以0的狀況
你也知道的吧
分母不可以是0
try和catch是專門防一些問題的
例如說
字串轉數字
SQL也有SQLException(全名我忘了)
那個就是針對SQL指令下錯去處理的防呆
印象中SQLite的db檔如果不存在會發生此Exception
作者: ricky52_be7    時間: 2012-4-2 20:40
george310909 發表於 2012-4-1 21:26
ArithmeticException我目前所知的是用在除以0的狀況
你也知道的吧
分母不可以是0

但我用了後不是說我用的分母是0
而是BMI=Infinity
作者: ploglin    時間: 2012-4-3 09:09
我覺得你把 LogCat 中的 Error 貼出來,比較可以知道確實的問題。
作者: george310909    時間: 2012-4-3 12:07
ricky52_be7 發表於 2012-4-2 20:40
但我用了後不是說我用的分母是0
而是BMI=Infinity

我晚一點測試後再回答您
我最近在準備期中考
作者: ricky52_be7    時間: 2012-4-3 20:13
ploglin 發表於 2012-4-3 09:09
我覺得你把 LogCat 中的 Error 貼出來,比較可以知道確實的問題。

改了後沒有Error但是過程出不到george310909給我的結果~




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1