NumberFormatException en Java con ejemplos

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:

  1. Public NumberFormatException(): Construye una NumberFormatException sin mensaje de detalle.
  2. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *