我正在尝试从编辑文本中获取值并尝试计算并将其放在textview中。但是我在从double转换为字符串时遇到错误。
这是我的编辑文本代码:
<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>
这是我的Activity类:
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)
答案 0 :(得分:1)
试试这个代码......
a= (EditText) findViewById(R.id.a);
b= (EditText) findViewById(R.id.b);
c= (EditText) findViewById(R.id.c);
Button submitbutn = (Button) findViewById(R.id.submitbutton);
submitbutn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String aa= a.getText().toString();
String bb= b.getText().toString();
String cc= c.getText().toString();
double aDouble = aa.length() > 0 ? Double.valueOf(aa) : 0;
double bDouble = bb.length() > 0 ? Double.valueOf(bb) : 0;
double cDouble = cc.length() > 0 ? Double.valueOf(cc) : 0;
Double total= (aDouble * bDouble) + (aDouble * cDouble) ;
totalbill = Double.toString(total);
d.setText(totalbill);
}
});
答案 1 :(得分:0)
在Double.parse之前,请检查字符串是否为空。
if(aa != null && aa.length() > 0){
Double.parse(aa);
}
答案 2 :(得分:0)
更改此行
totalbill = Double.toString(total);
到
totalbill = total.toString();
对结果进行评论
答案 3 :(得分:0)
您可以尝试使用parseDouble();
Double total= (Double.parseDouble(aa)*Double.parseDouble(bb))...
然后检查aa!=null
bb!=null
和cc!=null
,而不是空
答案 4 :(得分: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)) ;
}
答案 5 :(得分: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)) ;
}
答案 6 :(得分:0)
修剪字符串并解析为double并检查字符串的长度是否为空
if(aa != null && aa.trim().length() > 0){
Double.valueOf(aa.trim())
}