NumberForamtException is thrown when you try to convert a string to numeric type, but the string is in inappropriate format to convert to the numeral.
Signature
public class NumberFormatException extends IllegalArgumentException{
}
Example
Integer.parseInt() method throws NumberFormatException, when you try to convert an incompatible string to an integer.
App.java
package com.sample.app;
public class App {
public static void main(String args[]) {
try {
Integer.parseInt("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
}
}
Output
java.lang.NumberFormatException: For input string: "abcd"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.sample.app.App.main(App.java:7)
Following are some of the core java methods that throw NumberFOrmatException.
javax.xml.bind.DatatypeConverterImpl._parseFloat(CharSequence)
javax.xml.bind.DatatypeConverterImpl._parseFloat(CharSequence)
java.math.BigDecimal.BigDecimal(char[], int, int, MathContext)
java.math.BigDecimal.parseExp(char[], int, int)
javax.xml.bind.DatatypeConverterImpl.removeOptionalPlus(CharSequence)
javax.xml.bind.DatatypeConverterImpl.removeOptionalPlus(CharSequence)
java.lang.NumberFormatException.NumberFormatException(String)
java.lang.NumberFormatException.NumberFormatException()
java.lang.NumberFormatException.NumberFormatException(String)
javax.xml.bind.DatatypeConverterImpl._parseDouble(CharSequence)
javax.xml.bind.DatatypeConverterImpl._parseDouble(CharSequence)
javax.xml.bind.DatatypeConverterImpl._parseInt(CharSequence)
javax.xml.bind.DatatypeConverterImpl._parseInt(CharSequence)
java.math.BigDecimal.adjustScale(int, long)
java.math.BigDecimal.BigDecimal(char[], int, int, MathContext)
java.math.BigDecimal.BigDecimal(double, MathContext)
java.math.BigInteger.BigInteger(byte[])
java.math.BigInteger.BigInteger(int, byte[])
java.math.BigInteger.BigInteger(int, int[])
java.math.BigInteger.BigInteger(int[])
java.math.BigInteger.BigInteger(String, int)
java.lang.Byte.decode(String)
java.lang.Long.decode(String)
java.lang.Short.decode(String)
java.lang.NumberFormatException.forInputString(String)
java.lang.Package.isCompatibleWith(String)
java.lang.Byte.parseByte(String, int)
java.math.BigInteger.parseInt(char[], int, int)
java.lang.Integer.parseInt(String, int)
java.lang.Long.parseLong(String, int)
java.lang.Short.parseShort(String, int)
java.lang.Integer.parseUnsignedInt(String, int)
java.lang.Long.parseUnsignedLong(String, int)
Possible Causes of NumberFormatException
a. Trying to convert non-numeric string to an integer.
App.java
package com.sample.app;
public class App {
public static void main(String args[]) {
try {
Integer.parseInt("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
System.out.println();
try {
Double.parseDouble("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
System.out.println();
try {
Float.parseFloat("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
}
}
Output
java.lang.NumberFormatException: For input string: "abcd"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at com.sample.app.App.main(App.java:7)
java.lang.NumberFormatException: For input string: "abcd"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.sample.app.App.main(App.java:15)
java.lang.NumberFormatException: For input string: "abcd"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at com.sample.app.App.main(App.java:23)
b. Initializing numeric wrapper classes with non-numeric data
Example
Integer i = new Integer("abcd");
Double d = new Double("abcd");
App.java
package com.sample.app;
public class App {
public static void main(String args[]) {
try {
new Integer("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
System.out.println();
try {
new Double("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
System.out.println();
try {
new Float("abcd");
}catch(NumberFormatException e) {
e.printStackTrace();
}
}
}
Output
java.lang.NumberFormatException: For input string: "abcd"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.<init>(Integer.java:867)
at com.sample.app.App.main(App.java:7)
java.lang.NumberFormatException: For input string: "abcd"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.lang.Double.<init>(Double.java:608)
at com.sample.app.App.main(App.java:15)
java.lang.NumberFormatException: For input string: "abcd"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at java.lang.Float.<init>(Float.java:532)
at com.sample.app.App.main(App.java:23)
c. Passing out of range values
Example
Integer i = Integer.parseInt("1111111111111111");
App.java
package com.sample.app;
public class App {
public static void main(String args[]) {
try {
Integer.parseInt("1111111111111111");
}catch(NumberFormatException e) {
e.printStackTrace();
}
}
}
Output
java.lang.NumberFormatException: For input string: "1111111111111111"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at com.sample.app.App.main(App.java:7)
Reference
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/lang/NumberFormatException.html
You may like
No comments:
Post a Comment