0

据我所知,我输入了正确的 try catch 语句来停止 NumberFormatException ... NullPointerException 可能来自此:

TextView tvfin = null;
tvfin.setText(fin+"");
tvfin = (TextView)findViewById(R.id.tvfinalgrade);

这三行将在 OnClickListener 中,但我还没有创建它,我不确定这是否会导致问题?任何帮助深表感谢!

package wilson.GC;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class GFActivity extends Activity {

 @Override
    public void onCreate(Bundle savedInstanceState) {          

        super.onCreate(savedInstanceState);    
        setContentView(R.layout.getfinal);

        double q1, q2, ex, fin;
         EditText etq1, etq2, eteg;
         etq1 = (EditText)findViewById(R.id.editText1);
            try{
                q1 = Double.parseDouble(etq1.getText().toString());
            } catch (NumberFormatException e) {
                q1=0;
            }
         etq2 = (EditText)findViewById(R.id.editText2);
            try{
                q2 = Double.parseDouble(etq2.getText().toString());
            } catch (NumberFormatException e){
                q2 = 0;
            }
         eteg = (EditText)findViewById(R.id.editText3);
         try{
             ex = Double.parseDouble(eteg.getText().toString());
         } catch (NumberFormatException e){
             ex = 0;
         }
        fin = 0.4*q1+0.4*q2+0.2*ex;
            if(fin == (int)fin){
                System.out.println((int)fin);
            }
            else{
                fin = 0.01*((int)(fin*100));
                System.out.println(fin);
            } 
        TextView tvfin = null;
        tvfin.setText(fin+"");
        tvfin = (TextView)findViewById(R.id.tvfinalgrade);

    }
}
4

2 回答 2

2

在设置文本之前尝试设置 tvfin:

TextView tvfin = (TextView)findViewById(R.id.tvfinalgrade);
tvfin.setText(fin+"");
于 2012-04-01T15:24:29.983 回答
2

您正在尝试在TextView初始化之前设置它的值。这肯定会给你一个NullPointerException. 改变这个:

TextView tvfin = null;
tvfin.setText(fin+"");
tvfin = (TextView)findViewById(R.id.tvfinalgrade);

至:

TextView tvfin = (TextView)findViewById(R.id.tvfinalgrade);
tvfin.setText(fin+"");
于 2012-04-01T15:25:13.417 回答