2017-07-29 50 views
-2

我正在製作一個Speed Converter應用程序。我的if語句存在問題。我希望我的距離/小時/分鐘/秒等於0時它留空,以便它仍然會計算我的公式。但不幸的是,當我點擊計算按鈕時,我的應用程序不斷崩潰。任何類型的建議或修訂都會有所幫助。謝謝。如何使eddittext的值爲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

請包括崩潰日誌 – UmarZaii

回答

-1

如果EditText值爲空,則不應該調用Double.parseDouble()。相反,將值賦值爲0給變量。

0

您的問題是,您將EditText值設置爲「0」而不是將其應用於您的值。它應該是

if (d.isEmpty()) { 
    dis = 0.0; 
} else { 
    dis = Double.parseDouble(d); 
} 

+0

如果我這樣做,我的公式不會讀'dis'。怎麼修? – Herbert

+1

之前聲明dis ...我建議你看看Java初學者教程。 – creativecreatorormaybenot

-1

不檢查這樣

d.equals("") 

使用此方法

d.isEmpty() 

而且同所有其他的EditText變量。

相關問題