【发布时间】:2014-07-01 17:12:50
【问题描述】:
在我的 Android 应用程序中,我正在使用 EditTexts 中输入的值计算双精度值,并尝试将答案放入 TextView。我的代码是这样的:
double scoreDouble;
TextView score;
EditText gpa;
EditText sat;
EditText act;
Button calc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gpa = (EditText) findViewById(R.id.gpa);
String gpaString = gpa.getText().toString();
if(gpaString.equals("")){
gpaString = "0";
}
final double gpaDouble = Double.parseDouble(gpaString);
sat = (EditText) findViewById(R.id.sat);
String satString = sat.getText().toString();
if(satString.equals("")){
satString = "0";
}
final int satInt = Integer.parseInt(satString);
act = (EditText) findViewById(R.id.act);
String actString = act.getText().toString();
if(actString.equals("")){
actString = "0";
}
final int actInt = Integer.parseInt(actString);
score = (TextView) findViewById(R.id.score);
calc = (Button) findViewById(R.id.calc);
calc.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(actInt/36>satInt/2400){
scoreDouble= (0.6*gpaDouble*25)+(0.4*(actInt/36)*100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is "+scoreString);
}else{
scoreDouble = (0.6*gpaDouble*25)+(0.4*(satInt/2400)*100);
String scoreString = Double.toString(scoreDouble);
score.setText("Your score is "+scoreString);
}
}
});
}
到目前为止,当按下按钮时,TextView 会显示:“你的分数是 0.0。”我觉得这与我将 EditTexts 的默认值设置为 0 的事实有关。在我这样做之前,我收到一个错误,指出 NumberFormatException:无效双精度:“”。如果这是问题,我应该如何解决它。如果这不是问题,那是什么问题?
【问题讨论】:
-
您的问题到底是什么?它显示 0.0 而不是 0 的事实?
-
尝试使用 String.valueOf(
) 而不是 Double.toString( ) -
问题是它不应该显示 0.0。无论我在编辑文本中输入什么,它都会这样做。也将其更改为 String.valueOf 并没有解决问题。
标签: android parsing textview double numberformatexception