java.lang.NumberFormatException: Invalid int: “” i

2019-01-09 15:59发布

问题:

I already know what is causing this error, I just do not know how to handle the case when a user doesn't enter anything into the dialogue box, then hit the button which parses the string into an int. It can't parse an empty string into an int, so it throws an error. I have done some research on how to do this, but have not found a satisfactory result that works.

Problem: How do you check to see if the dialogue box has text in it, before it tries to run the rest of the code.

回答1:

Some code would help with the syntax but basically

 if ("".equals(text)  // where text is the text that you get from an EditText or wherever you get it
 {    // give message to enter valid text;    }

Also, you can surround with a try/catch and catch a numberFormatException then print an appropriate message



回答2:

Problem: How do you check to see if the dialogue box has text in it, before it tries to run the rest of the code.

Solution: An if statement.

 int parseToInt(String maybeInt, int defaultValue){
     if (maybeInt == null) return defaultValue;
     maybeInt = maybeInt.trim();
     if (maybeInt.isEmpty()) return defaultValue;
     return Integer.parseInt(maybeInt);
 }

If you can spare the extra dependency, I'd pull in Common Lang StringUtils, to use StringUtils.isBlank instead of trim/isEmpty, because that also handles Unicode.



回答3:

   String text = editText.getText().toString(); 
   if(!text.equals("") && text.matches("^\\d+$")){
       cast to int
    }


回答4:

The Same Error Was Causing My Application To Crash. Ans is Simple- Put the code in the

try{ }

and

catch()

Block which causes Exception ,like this code snip.This Works for me.

public void setAge(String age) {

    final Calendar c = Calendar.getInstance();
    int yearCurrent = c.get(Calendar.YEAR);
    try {
        int yearPrev = (int) Integer.parseInt(age.substring(0, 4));//this line was causing the error
        int ageYear=yearCurrent-yearPrev;
        ageUser="Age : "+Integer.toString(ageYear);
    }
    catch(NumberFormatException numberEx) {
        System.out.print(numberEx);
    }


}