0

良い一日。Android用のEclipseでアプリケーションを作成しましたが、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));

誰かが私を助けることができますか?

4

2 に答える 2

0

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));
   }
于 2013-02-21T20:58:14.903 に答える
0

http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#parseDouble(java.lang.String)

nullまたは""を指定すると、parseDouble は満足しません。

于 2013-02-21T20:52:48.420 に答える