Exception on Using Double. valueOf() Method

Exception on Using Double. valueOf() Method

I'm a beginner in Android development. I am making a basic square equations solver. I use the code below to get strings from EditText elements:

a = mA.getText().toString(); 
b = mB.getText().toString(); 
c = mC.getText().toString(); 

Then I use Double.valueOf() method to convert them into doubles and solve the equatation(s is a Solver instance):

mSolution.setText(s.solve(Double.valueOf(a),
                       Double.valueOf(b), Double.valueOf(c)));

If EditText is empty, an attempt to solve it gives me an exception

java.lang.NumberFormatException: Invalid double: ""

I guess, the .toString() method returns null or "", but the if statement doesn't work here :c.

2

5 Answers

you should check Strings with equals like

if(!"".equals(mB.getText().toString()))
   //then your if statement
1

Why dont you catch that Exception?

try{
    mSolution.setText(s.solve(Double.valueOf(a),Double.valueOf(b), Double.valueOf(c)));
}
catch(NumberFormatException e){
    //whatever you feel necessary to do when en empty string is presented
}

Advantage: You don't have to check every String for its correctness. Disadvantage: You dont know which String is not correct. BUT: You could for example insert Arashs code in the catch, so that at that point you can check which string is faulty.

You got java.lang.NumberFormatException: Invalid double: "" because you trying to convert NULL value into Double

so before convert this value you must check the String is null or not like below:

 if(!a.equals("") && !b.equals("") && !c.equals("")){
  //Do your job
  }

Try this

try {

        if (a != null && a.length != 0 && b != null && b.length != 0
                && b != null && b.length != 0) {
            mSolution.setText(s.solve(Double.valueOf(a), Double.valueOf(b),
                    Double.valueOf(c)));
        }
    } catch (NumberFormatException e) {
        e.printStackTrace();
    }

You are getting java.lang.NumberFormatException: Invalid double: "" because the values of a',b, orc` is sometime empty i.e "".

Double.valueOf() will return NumberFormatException if it is empty. To avoid this you can give check points like below,

if(mA.getText().toString().equals("") ||mB.getText().toString().equals("")||mC.getText().toString().equals("") )
   {
   Toast.makeText(getApplicationContext(), "Edittext is empty", Toast.LENGTH_SHORT).show();
    }
   else
    {
      a = mA.getText().toString(); 
      b = mB.getText().toString(); 
      c = mC.getText().toString();
    }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.