La excepción NumberFormatException se produce cuando se intenta convertir una string con un formato incorrecto en un valor numérico. Eso significa que, cuando no es posible convertir una string en ningún tipo numérico (float, int, etc.), se lanza esta excepción. Es una excepción de tiempo de ejecución (excepción no verificada) en Java. Es una subclase de la clase IllegalArgumentException . Para manejar esta excepción, se puede usar el bloque try – catch.
Mientras operamos con strings, hay momentos en los que necesitamos convertir un número representado como una string en un tipo entero. El método generalmente utilizado para convertir String a Integer en Java es parseInt().
Uso del método parseInt() : como ya sabemos, hay dos variantes de este método, a saber, las siguientes para obtener una mejor comprensión
public static int parseInt(String s) throws NumberFormatException This function parses the string argument as a signed decimal integer.
public static int parseInt(String s, int radix) throws NumberFormatException This function parses the string argument as a signed integer in the radix specified by the second argument.
Tipo de devolución:
En palabras simples, ambos métodos convierten la string en su equivalente entero. La única diferencia es la del parámetro radix. El primer método se puede considerar como un equivalente del segundo método con radix = 10 (Decimal).
Constructores:
- Public NumberFormatException(): Construye una NumberFormatException sin mensaje de detalle.
- Public NumberFormatException(String msg): Construye una NumberFormatException con el mensaje de detalle ‘msg’
Razones comunes para NumberFormatException:
Hay varios problemas relacionados con el formato de string incorrecto para la conversión en valor numérico. Algunos de ellos son:
1. La string de entrada es nula
Integer.parseInt("null") ;
2. La string de entrada está vacía
Float.parseFloat(“”) ;
3. La string de entrada con espacios en blanco al principio y/o al final
Integer abc=new Integer(“ 432 “);
4. La string de entrada con símbolos extra
Float.parseFloat(4,236);
5. La string de entrada con datos no numéricos
Double.parseDouble(“ThirtyFour”);
6. La string de entrada es alfanumérica
Integer.valueOf(“31.two”);
7. La string de entrada puede exceder el rango del tipo de datos que almacena la string analizada
Integer.parseInt(“1326589741236”);
8. El tipo de datos no coincide entre el valor de la string de entrada y el tipo de método que se utiliza para analizar
Integer.parseInt("13.26");
Ejemplo:
Java
// Java Program to illustrate NumberFormatException // Importing Scanner class to take // input number from the user import java.util.Scanner; // Class public class GFG { // Main driver method public static void main(String[] arg) { // Declaring an variable which // holds the input number entered int number; // Creating a Scanner class object to // take input from keyboard // System.in -> Keyboard Scanner sc = new Scanner(System.in); // Condition check // If condition holds true, Continue loop until // valid integer is entered by user while (true) { // Display message System.out.println("Enter any valid Integer: "); // Try block to check if any exception occurs try { // Parsing user input to integer // using the parseInt() method number = Integer.parseInt(sc.next()); // Number can be valid or invalid // If number is valid, print and display // the message and number System.out.println("You entered: " + number); // Get off from this loop break; } // Catch block to handle NumberFormatException catch (NumberFormatException e) { // Print the message if exception occurred System.out.println( "NumberFormatException occurred"); } } } }
Salida: La siguiente salida es para diferentes números ingresados por el usuario
Enter any valid Integer: 12,017 NumberFormatException occurred Enter any valid Integer: Sixty4 NumberFormatException occurred Enter any valid Integer: null NumberFormatException occurred Enter any valid Integer: 436.25 NumberFormatException occurred Enter any valid Integer: 3.o NumberFormatException occurred Enter any valid Integer: 98562341789 NumberFormatException occurred Enter any valid Integer: 1000 You entered: 1000
Publicación traducida automáticamente
Artículo escrito por hemavatisabu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA