0

画面からテキストを読み取ろうとしてダブルに変更するとクラッシュします

public void equesionOperation(int signNum1) {

        S_numInTV=TV_calcScreen.getText().toString();
        S_numUp=TV_calcUp.getText().toString();

        D_numIn=Double.parseDouble(S_numInTV);
        D_numToCalc=Double.parseDouble(S_numUp);

        switch (signNum1){
        case 1: D_sum=D_numIn+D_numToCalc;break;
        case 2: D_sum=D_numIn-D_numToCalc;break;
        case 3: D_sum=D_numIn*D_numToCalc;break;
        case 4: D_sum=D_numToCalc/D_numIn;break;
        case 5: D_sum=Math.pow(D_numToCalc, D_numIn);break;
        default: break;
        }
        S_sum=(""+D_numToCalc+"  "+D_numIn);
    }
4

2 に答える 2

0

これは、クラッシュの原因を見つけるのに役立つ場合があります。コードの 3 行目と 4 行目を次のように置き換えます。

try {
   D_numIn=Double.parseDouble(S_numInTV);
} catch (NumberFormatException nfe) {
   System.out.printf("Attempted to parse a double, but found: '%s'%n", S_numInTV);
}
try {
D_numToCalc=Double.parseDouble(S_numUp);
} catch (NumberFormatException nfe) {
   System.out.printf("Attempted to parse a double, but found: '%s'%n", S_numUp);
}
于 2012-08-26T08:55:35.453 に答える
0
 S_numInTV=TV_calcScreen.getText().toString();
 S_numUp=TV_calcUp.getText().toString();

これらの文字列値はリテラルまたは数値ですか?

String str1 = "100.476";
Double dObj2 = Double.valueOf(str1);
System.out.println(dObj2);

上記のコードは例外は発生しませんが、

String str1 = "ss";
    Double dObj2 = Double.valueOf(str1);
    System.out.println(dObj2);

上記のコードは numberfomateexception が発生します

したがって、文字列を double に変換する前に、どの文字列が入力されているかを確認する必要があります。

于 2012-08-26T09:04:51.727 に答える