Updated April 12, 2023
Introduction to NumberFormatException in Java
The NumberFormatException is an unchecked exception in java that occurs when a user tries to convert a string into a numeric value. The NumberFormatException is a built-in class in java that is defined in the Java.lang.NumberFormatException package. The IllegalArgumentException class is a superclass of the NumberFormatException as it is an unchecked exception, so it is not forced to handle and declare it. The NumberFormatException is actually thrown by the parseXXX() functions when functions are not able to convert or format(convert ) a string into numeric value like integer, float, double etc., because of the format of an input string is illegal and not appropriate. For example, in a Java program, sometimes the user input is accepted through command-line arguments as a text field in the form of a string. And to use this string in some arithmetic operations, it should first parse or convert into data types(specific numeric type) by using the parseXXX() functions of the wrapper classes.
The hierarchy of NumberFormatException class is:
Object ->Throwable -> Exception ->RuntimeException ->NumberFormatException.
Syntax
The following is the declaration for java.io. PrintWriter class.
public class NumberFormatException extends IllegalArgumentException implements Serializable
{
// Constructors of the NumberFormatException class
}
The above is the syntax of the NumberFormatException, where it is extended to the:
IllegalArgumentException class and implements Serializable
How NumberFormatException work in Java?
When an attempt is made to convert a string into a number, the NumberFormatException occurs. This kind of conversions is performed by using functions like Integer.parseInt(), Float.parseFloat() and all. Suppose we call Integer.parseInt(s) function where s is a type of String and its value is string “30”, so the function converts the string value correctly to an int 30. But what happened? If the value of s is supposed “thirty”, which is illegal, then the function fails and throws an exception: NumberFormatException. To handle this exception, we can write the catch block for it; if an exception is not handled, then the program will crash.
There are Different reasons to throws the NumberFormatException, as we can see below –
- The provided string to be converting may be null. Ex :Integer.parseInt(null);
- The provided string may be of length zero. Ex :Integer.parseInt(“”);
- The provided string maybe has no numeric characters. Ex:Integer.parseInt(“Thirty”);
- The provided string may be not represents an Integer value. Ex :Integer.parseInt(“FG67”);
- T The provided string may be empty. Ex :Integer.parseInt(“”);
- The provided string may be trailing space. Ex :Integer.parseInt(“785”);
- The provided string may be leading space. Ex :Integer.parseInt(” 785 “);
- The provided string may be contains alphanumeric. Ex :Long.parseLong(“F5”);
- The provided string may be data type supported out of range. Ex: Integer.parseInt(“139”);
- The provided string and the function used to convertmay be of different data types.Ex :Integer.parseInt(“3.56”);
Constructors
- NumberFormatException(): This constructor create theNumberFormatException withoutdetailed specific message.
- NumberFormatException(String s): This constructor creates the NumberFormatException with the specific message in detail.
Examples to Implement NumberFormatException in Java
Below are examples to implement:
Example #1
Next, we write the java code to understand the NumberFormatException more clearly with the following example where we create a PrintWriter object by using the PrintWriter class constructor and pass the file name to write in it, as below –
Code:
//package p1;
import java.util.Scanner;
public class Demo
{
public static void main( String[] arg) {
int age;
Scanner sc = new Scanner(System.in);
System.out.println("Please Enter your age : ");
//throws Exception as if the input string is of illegal format for parsing as it as null or alphanumeric.
age = Integer.parseInt(sc.next());
System.out.println("Your age is : " +age);
}
}
Output:
When the user enters “25+”, an output of the above code is:
When a user enters not the well-formatted string “25F”, the output is:
When a user enters a string “Twenty Five”, the output is:
When a user enters a string “null”, the output is:
When a user enters string value as a float “40.78”, the output is:
When the user enters a string “25”, which is a valid string. The output is:
Explanation: As in the above code, the age value is accepted from the user in string format, which further converts into the integer format by using the Integer.parseInt(sc.next()) function. While the user an illegal input string or not a well-formatted string, the NumberFormatException occurs, it throws, and the program terminates unsuccessfully. So to provide the valid string, it should be taken care that an input string should not be null, check an argument string matches the type of the conversion function used and also check if any unnecessary spaces are available; if yes, then trim it and so all care must be taken.
Example #2
Next, we write the java code to understand the NumberFormatException where we generate the NumberFormatException and handle it by using the try-catch block in the program, as below –
Code:
//package p1;
import java.util.Scanner;
public class Demo
{
public static void main( String[] arg) {
int age;
Scanner sc = new Scanner(System.in);
try
{
System.out.println("Please Enter your age : ");
//throws Exception as if the input string is of illegal format for parsing as it as null or alphanumeric.
age = Integer.parseInt(sc.next());
System.out.println("Your age is : " +age);
} catch(NumberFormatException e)
{
System.out.println("The NumberFormatExceptionoccure.");
System.out.println("Please enter the valid age.");
}
}
}
When the user enters a string “23F”, the output is:
When a user enters a string “23”, the output is:
Explanation: As in the above code try-catch block is used. It is always a good practice to enclose lines of code that can throw an exception in a try-catch block by which it handles the NumberFormatException and prevents it from generating the Exception.
Conclusion
The NumberFormatException in java is an unchecked exception that occurs when a not well-formatted string is trying to converts into a numeric value by using the parseXXX() functions. The NumberFormatException is a built-in class in which is defined in the Java.lang.NumberFormatException package.
Recommended Articles
This is a guide to NumberFormatException in Java. Here we discuss an introduction to NumberFormatException with appropriate syntax, how does it work, and examples. You can also go through our other related articles to learn more –