我正在制作一个Speed Converter应用程序。我的if语句有问题。我希望我的距离/小时/分钟/秒等于0,当它留空时,它仍将计算我的公式。但不幸的是,当我点击计算按钮时,我的应用程序仍然崩溃。任何建议或修改都会有所帮助。谢谢。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
distance = (EditText)findViewById(R.id.distance);
hour = (EditText)findViewById(R.id.hour);
minute = (EditText)findViewById(R.id.minute);
second = (EditText)findViewById(R.id.second);
kph = (TextView)findViewById(R.id.kph);
kps = (TextView)findViewById(R.id.kps);
mm = (TextView)findViewById(R.id.mm);
}
public void computeClick(View view) {
String d = distance.getText().toString().trim();
String h = hour.getText().toString().trim();
String m = minute.getText().toString().trim();
String s = second.getText().toString().trim();
Double dis = Double.parseDouble(d);
Double hr = Double.parseDouble(h);
Double min = Double.parseDouble(m);
Double sec = Double.parseDouble(s);
if (d.equals("")) {
distance.setText("0");
}
if (h.equals("")) {
hour.setText("0");
}
if (m.equals("")) {
minute.setText("0");
}
if (s.equals("")) {
second.setText("0");
}
Double dtok = dis / 1000;
Double mtoh = min / 60;
Double stoh = sec / 3600;
Double htoh = hr / 1;
Double htos = hr * 3600;
Double mtos = min * 60;
Double stos = sec / 1;
Double htom = hr * 60;
Double stom = sec / 60;
Double mtom = min / 1;
Double totaltimekph = mtoh + stoh + htoh;
Double totalkph = dtok / totaltimekph;
kph.setText(Double.toString(totalkph));
Double totaltimekps = htos + mtos + stos;
Double totalkps = dtok / totaltimekps;
kps.setText(Double.toString(totalkps));
Double totaltimempm = htom + stom + mtom;
Double totalmpm = dis / totaltimempm;
mm.setText(Double.toString(totalmpm));
}
答案 0 :(得分:0)
您的问题是您将EditText
值设为“0”而不是将其应用于您的值。它应该是
if (d.isEmpty()) {
dis = 0.0;
} else {
dis = Double.parseDouble(d);
}
等
答案 1 :(得分:-1)
如果EditText值为空,则不应调用Double.parseDouble()
。而是将值指定为0到变量。
答案 2 :(得分:-1)
不要这样检查
d.equals("")
使用此方法
d.isEmpty()
对于所有其他EditText变量也一样。