一切都没有错误,但在xml中,tvfinalgrade保持0.0 ...为什么不显示双鳍?我确定应该写出tvfin代码行的顺序,但我认为它不对。
public class GFActivity extends Activity {
public double fin;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.getfinal);
double q1, q2, ex;
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);
}
Button solve = (Button)findViewById(R.id.getfinbutton);
solve.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
TextView tvfin= TextView)findViewById(R.id.tvfinalgrade);
tvfin.setText(fin+"");
}
});
}
}
答案 0 :(得分:1)
当您启动应用时,在onCreate()
中您已经解析了EditText
内容(这些内容为空,因此您抛出NumberFormatException
并且您的fin
变量最终为0
)当您进入设置结果的部分(用户点击Button
)时,您将当前fin
的{{1}}设置为0
(问题是,当用户点击TextView
时,您永远不会获得当前 Button
内容进行任何计算,而EditText
变量是旧值(fin
))。使用0
方法移动您的计算:
onClick()