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.
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
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.
String text = editText.getText().toString();
if(!text.equals("") && text.matches("^\\d+$")){
cast to int
}
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);
}
}