Android,无效双:“”空白字段使程序崩溃
Android, Invalid double: "" blank field crashes the program
我正在尝试在用户输入后使用按钮进行计算。当我不填写字段并按下按钮时,我的程序崩溃了,但我只想祝酒词。我已经阅读了很多其他类似的问题,但我不明白我必须做些什么来解决在我的代码中..
有没有人可以帮助我??谢谢..
activity_main.xml:
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText1"/>
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText2"/>
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText3"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/textView1"/>
<Button
android:layout_width="65dp"
android:layout_height="wrap_content"
android:id="@+id/calculateButton
android:background="@android:drawable/ic_menu_edit" />
MainActivity.java:
......
mEditText1 = (EditText)findViewById(R.id.editText1);
mEditText2 = (EditText)findViewById(R.id.editText2);
mEditText3 = (EditText)findViewById(R.id.editText3);
mTextView = (TextView)findViewById(R.id.textView1);
cButton = (Button)findViewById(R.id.calculateButton);
cButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//When the button is clicked, call the calucate method.
calculate();
}
});
......
public void calculate(){
Double value1 = Double.parseDouble(mEditText1.getText().toString());
Double value2 = Double.parseDouble(mEditText2.getText().toString());
Double value3 = Double.parseDouble(mEditText3.getText().toString());
if((value1!=0)&&(value2!=0)) {
if ((value1 != null) && (value2 != null) && (value3 != null)) {
calculatedValue = (value2 * value3) / value1;
mTextView.setText(calculatedValue.toString());}
else {
Toast.makeText(getApplicationContext(), "Please fill them all", Toast.LENGTH_LONG).show();
}
}
我得到的错误是:
12-22 20:09:26.694 18523-18523/com.example.nigi.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NumberFormatException: Invalid double: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:248)
at java.lang.Double.parseDouble(Double.java:295)
at android.view.View.performClick(View.java:4442)
at android.view.View$PerformClick.run(View.java:18473)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
谢谢!!
使用此代码:
public void calculate()
{
if(String.valueOf(mEditText1.getText()).length() == 0)
mEditText1.setError("Required only alphabets");
else if(String.valueOf(mEditText2.getText()).length() == 0)
mEditText2.setError("Required only alphabets");
else if(String.valueOf(mEditText3.getText()).length() == 0)
mEditText3.setError("Required only alphabets");
else{
Double value1 = Double.parseDouble(String.valueOf(mEditText1.getText()));
Double value2 = Double.parseDouble(String.valueOf(mEditText2.getText()));
Double value3 = Double.parseDouble(String.valueOf(mEditText3.getText()));
calculatedValue = (value2 * value3) / value1;
mTextView.setText(calculatedValue.toString());
}
}
我正在尝试在用户输入后使用按钮进行计算。当我不填写字段并按下按钮时,我的程序崩溃了,但我只想祝酒词。我已经阅读了很多其他类似的问题,但我不明白我必须做些什么来解决在我的代码中.. 有没有人可以帮助我??谢谢..
activity_main.xml:
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText1"/>
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText2"/>
<EditText
android:layout_width="130dp"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/editText3"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:id="@+id/textView1"/>
<Button
android:layout_width="65dp"
android:layout_height="wrap_content"
android:id="@+id/calculateButton
android:background="@android:drawable/ic_menu_edit" />
MainActivity.java:
......
mEditText1 = (EditText)findViewById(R.id.editText1);
mEditText2 = (EditText)findViewById(R.id.editText2);
mEditText3 = (EditText)findViewById(R.id.editText3);
mTextView = (TextView)findViewById(R.id.textView1);
cButton = (Button)findViewById(R.id.calculateButton);
cButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//When the button is clicked, call the calucate method.
calculate();
}
});
......
public void calculate(){
Double value1 = Double.parseDouble(mEditText1.getText().toString());
Double value2 = Double.parseDouble(mEditText2.getText().toString());
Double value3 = Double.parseDouble(mEditText3.getText().toString());
if((value1!=0)&&(value2!=0)) {
if ((value1 != null) && (value2 != null) && (value3 != null)) {
calculatedValue = (value2 * value3) / value1;
mTextView.setText(calculatedValue.toString());}
else {
Toast.makeText(getApplicationContext(), "Please fill them all", Toast.LENGTH_LONG).show();
}
}
我得到的错误是:
12-22 20:09:26.694 18523-18523/com.example.nigi.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NumberFormatException: Invalid double: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:248)
at java.lang.Double.parseDouble(Double.java:295)
at android.view.View.performClick(View.java:4442)
at android.view.View$PerformClick.run(View.java:18473)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
谢谢!!
使用此代码:
public void calculate()
{
if(String.valueOf(mEditText1.getText()).length() == 0)
mEditText1.setError("Required only alphabets");
else if(String.valueOf(mEditText2.getText()).length() == 0)
mEditText2.setError("Required only alphabets");
else if(String.valueOf(mEditText3.getText()).length() == 0)
mEditText3.setError("Required only alphabets");
else{
Double value1 = Double.parseDouble(String.valueOf(mEditText1.getText()));
Double value2 = Double.parseDouble(String.valueOf(mEditText2.getText()));
Double value3 = Double.parseDouble(String.valueOf(mEditText3.getText()));
calculatedValue = (value2 * value3) / value1;
mTextView.setText(calculatedValue.toString());
}
}