0

編集テキストから値を取得しようとしていて、それを計算してテキストビューに入れようとしています。しかし、ダブルから文字列への変換中にエラーが発生します。

これは私の編集テキストコードです:

<EditText
     android:id="@+id/c"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:ems="10"
     android:gravity="center"
     android:inputType="number" >
    <requestFocus />
</EditText>
<EditText
            android:id="@+id/b"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:gravity="center"
            android:inputType="number" >

            <requestFocus />
        </EditText>
<EditText
    android:id="@+id/a"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:gravity="center"
    android:inputType="number" >
    <requestFocus />
</EditText>

ここに私のアクティビティクラスがあります:

a= (EditText) findViewById(R.id.a);
b= (EditText) findViewById(R.id.b);
c= (EditText) findViewById(R.id.c);
String aa= a.getText().toString();
String bb= b.getText().toString();
String cc= c.getText().toString();
Double total= (Double.valueOf(aa)*Double.valueOf(bb)) + (Double.valueOf(aa)*Double.valueOf(cc)) ;
totalbill = Double.toString(total);
Button submitbutn = (Button) findViewById(R.id.submitbutton);
submitbutn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {       
            d.setText(totalbill);
        }
    });
}

エラーログは次のとおりです。

10-08 07:27:58.115: E/AndroidRuntime(1909): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vat.calculator/com.vat.calculator.Home}: java.lang.NumberFormatException: Invalid double: ""
10-08 07:27:58.115: E/AndroidRuntime(1909):     at java.lang.Double.parseDouble(Double.java:295)
10-08 07:27:58.115: E/AndroidRuntime(1909):     at java.lang.Double.valueOf(Double.java:332)
10-08 07:27:58.115: E/AndroidRuntime(1909):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
10-08 07:27:58.115: E/AndroidRuntime(1909):     at java.lang.StringToReal.parseDouble(StringToReal.java:248)
4

7 に答える 7

0

Double.parse の前に、文字列が空でないことを確認してください。

if(aa != null && aa.length() > 0){
   Double.parse(aa);
}
于 2013-10-08T11:34:13.347 に答える
0

この行を変更

totalbill = Double.toString(total);

totalbill = total.toString();

結果についてコメントしてください

于 2013-10-08T11:34:21.843 に答える
0

以下のコードを試してください:

 if(aa != null && aa.length() > 0 && bb ! = null && bb.length>0 && cc!=null && cc.length>0){
        Double total= ((Double.parseDouble(aa))*(Double.parseDouble(bb)) + ((Double.parseDouble(aa))*(Double.parseDouble(cc)) ;
    }
于 2013-10-08T11:37:59.913 に答える
0

parseDouble()で試すことができます;

Double total= (Double.parseDouble(aa)*Double.parseDouble(bb))...

そして空でないことを確認aa!=null bb!=nullしてくださいcc!=null

于 2013-10-08T11:36:47.647 に答える