Java Android,无效的双引号&引用;空白字段使程序崩溃
在用户输入后,我尝试使用按钮进行计算。当我没有填写字段并按下按钮时,我的程序会崩溃,但我只想发送一条消息。。我读过很多其他类似的问题,但我不明白我必须做些什么来修复我的代码。。 有人能帮我吗??谢谢 activity_main.xml: 我得到的错误是: 谢谢 使用以下代码:Java Android,无效的双引号&引用;空白字段使程序崩溃,java,android,numberformatexception,Java,Android,Numberformatexception,在用户输入后,我尝试使用按钮进行计算。当我没有填写字段并按下按钮时,我的程序会崩溃,但我只想发送一条消息。。我读过很多其他类似的问题,但我不明白我必须做些什么来修复我的代码。。 有人能帮我吗??谢谢 activity_main.xml: 我得到的错误是: 谢谢 使用以下代码: public void calculate() { if(String.valueOf(mEditText1.getText()).length() == 0)
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());
}
}
实现尝试。。。抓住。。从哪里可以找到crashWonder为什么
“
不能被视为有效数字?因为Java不会将“
转换为0
。Double value1=Double.parseDouble(String.valueOf(mEditText1.getText());Double value2=Double.parseDouble(String.valueOf(mEditText2.getText());Double value3=Double.parseDouble(String.valueOf(mEditText3.getText());你知道这会导致完全相同的异常,对吗?这里的问题是解析double。在解析之前,您必须检查输入是否正确,@0xDEADC0DE,谢谢您的通知,它工作正常!!非常感谢!!!:)
......
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());
}
}