0

는 지금까지 내가 아는 한, 내가 NumberFormatException이 중지 올바른 시도의 catch 문에 넣어 ... NullPointerException가이에서 오는 될 수있다 에뮬레이터에서이 액티비티를 열면 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); 

    } 
} 

답변

2

의 텍스트를 설정하기 전에 tvfin 설정하십시오 : 당신은 그것을 초기화 것 전에 TextView의 값을 설정하려는

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

. 가장 확실한 것은 NullPointerException입니다. 이 변경 :

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

에 :

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