[英]eclipse - android application crashes when EditText is empty
美好的一天。 我在eclipse中為Android編寫了應用程序,而當EditText為空時,應用程序崩潰。 我嘗試了很多方法,但是沒有用。 當我輸入它並且EditText為空時,它都會崩潰。 對不起我的英語不好。 這是我的代碼的一部分:
public class MainActivity extends Activity implements OnClickListener {
TextView mnozstvo;
TextView percento;
TextView hmotnost;
TextView vysledok1;
TextView vysledok2;
TextView text;
RadioButton muz1;
RadioButton zena1;
Button vysledok;
EditText coo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView)this.findViewById(R.id.text);
mnozstvo = (TextView)this.findViewById(R.id.dl);
percento = (TextView)this.findViewById(R.id.per);
hmotnost = (TextView)this.findViewById(R.id.kg);
vysledok1 = (TextView)this.findViewById(R.id.krv);
vysledok2 = (TextView)this.findViewById(R.id.dych);
muz1 = (RadioButton)this.findViewById(R.id.muz);
zena1 = (RadioButton)this.findViewById(R.id.zena);
vysledok = (Button)this.findViewById(R.id.vysledok);
vysledok.setOnClickListener(this);
}
.................
public void convertDollarsToEuros() {
double val = Double.parseDouble(mnozstvo.getText().toString());
double val1 = Double.parseDouble(percento.getText().toString());
double val2 = Double.parseDouble(hmotnost.getText().toString());
vysledok1.setText(Double.toString((val*val1*0.8)/(val2*0.68)));
vysledok2.setText(Double.toString(((val*val1*0.8)/(val2*0.68))/(2.1)));
text.setText(Double.toString(((val*val1*0.8)/(val2*0.68))*6.6164));
}
public void convertEurosToDollars() {
double val = Double.parseDouble(mnozstvo.getText().toString());
double val1 = Double.parseDouble(percento.getText().toString());
double val2 = Double.parseDouble(hmotnost.getText().toString());
vysledok1.setText(Double.toString((val*val1*0.8)/(val2*0.55)));
vysledok2.setText(Double.toString(((val*val1*0.8)/(val2*0.55))/(2.1)));
text.setText(Double.toString(((val*val1*0.8)/(val2*0.55))*6.6164));
有人能幫我嗎?
http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#parseDouble(java.lang.String)
如果為null或“”,則 parseDouble將不滿意
Double.parseDouble()
將引發NumberFormatException。
但是,不必等待異常發生然后再處理它,您可以在嘗試解析它之前檢查字符串的長度。
您的代碼應如下所示:
public void convertEurosToDollars() {
double val = 0;
double val1= 0;
double val2= 0;
if (mnozstvo.getText().length() > 0 ) {
val = Double.parseDouble(mnozstvo.getText().toString());
}
if (percento.getText().length() > 0 ) {
val2 = Double.parseDouble(percento.getText().toString());
}
if (hmotnost.getText().length() > 0 ) {
val3 = Double.parseDouble(hmotnost.getText().toString());
}
vysledok1.setText(Double.toString((val*val1*0.8)/(val2*0.55)));
vysledok2.setText(Double.toString(((val*val1*0.8)/(val2*0.55))/(2.1)));
text.setText(Double.toString(((val*val1*0.8)/(val2*0.55))*6.6164));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.