George
George

Reputation: 33

java.lang.NumberFormatException: For input string: "10.0"

This code must validate input data from the findActions() method:

try {
    System.out.println(findActions(lookingArea.substring(0, right)));// always printing valid number string
    Integer.parseInt(findActions(lookingArea.substring(0, right)));// checking for number format
}
catch(NumberFormatException exc) {
    System.out.println(exc);
}

But I always have java.lang.NumberFormatException: For input string: "*number*" that is so strange, because checking with System.out.println(findActions(lookingArea.substring(0, right)));,

I get *number* like 10.0

Upvotes: 3

Views: 28879

Answers (3)

Unnati Solanki
Unnati Solanki

Reputation: 176

One of the reason could be that your string is too long to convert into Integer type, So you can declare it as Long or Double based on the provided input.

Long l = Long.parseLong(str);

Upvotes: 1

Eng.Fouad
Eng.Fouad

Reputation: 117617

10.0 is not an integer number. Instead, you can use:

int num = (int) Double.parseDouble(...);

Upvotes: 4

rgettman
rgettman

Reputation: 178293

Integer.parseInt doesn't expect the . character. If you're sure it can be converted to an int, then do one of the following:

  1. Eliminate the ".0" off the end of the string before parsing it, or
  2. Call Double.parseDouble, and cast the result to int.

Quoting the linked Javadocs above:

The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value.

Upvotes: 9

Related Questions