当我把它留空时,如何使eddittext的值为0

时间:2017-07-29 12:59:11

标签: java android

我正在制作一个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));

}

3 个答案:

答案 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变量也一样。