Artículo original escrito por Thanoshan MV
Artículo original Java String to Int – How to Convert a String to an Integer
Traducido y adaptado por Santiago Yanguas

Los objetos de cadena son representados como una cadena de caracteres.

Si has trabajado en Java Swing, tiene componentes como JTextField y JTextArea que utilizamos para obtener nuestra entrada de la GUI. Toma nuestra entrada como una cadena de caracteres.

Si queremos hacer una calculadora simple usando Swing, tenemos que averiguar cómo convertir una cadena en un número entero. Esto nos lleva a la pregunta: ¿cómo podemos convertir una cadena en un número entero?

En Java, podemos utilizar Integer.valueOf() e Integer.parseInt() para convertir una cadena en un entero.

1. Utiliza Integer.parseInt() para convertir una cadena en un número entero

Este método devuelve la cadena como un tipo primitivo int. Si la cadena no contiene un entero válido, lanzará una NumberFormatException.

Por lo tanto, cada vez que convirtamos una cadena en un int, tenemos que ocuparnos de esta excepción colocando el código dentro del bloque try-catch.

Consideremos un ejemplo de conversión de una cadena a un int utilizando Integer.parseInt():

        String str = "25";
        try {
            int number = Integer.parseInt(str);
            System.out.println(number); // output = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }
Convertir cadena de texto a entero

Intentemos romper este código introduciendo un entero no válido:

     	String str = "25T";
        try{
            int number = Integer.parseInt(str);
            System.out.println(number);
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }
Prueba de la excepción

Como puedes ver en el código anterior, hemos intentado convertir 25T en un número entero. Esto no es una entrada válida. Por lo tanto, debes lanzar una NumberFormatException.

Este es el resultado del código anterior:

java.lang.NumberFormatException: For input string: "25T"
	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 OOP.StringTest.main(StringTest.java:51)
Mensaje de la excepción

A continuación, veremos cómo convertir una cadena de caracteres en un número entero utilizando el método Integer.valueOf().

2. Utiliza Integer.valueOf() para convertir una cadena en un número entero

Este método devuelve la cadena como un objeto entero. Si miras la documentación de Java, Integer.valueOf() devuelve un objeto entero que equivale a un nuevo Integer(Integer.parseInt(s)).

Colocaremos nuestro código dentro del bloque try-catch cuando utilicemos este método. Consideremos un ejemplo utilizando el método Integer.valueOf():

        String str = "25";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); // output = 25
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }
Convertir cadena a un número entero

Ahora, intentemos romper el código anterior introduciendo un número entero no válido:

        String str = "25TA";
        try{
            Integer number = Integer.valueOf(str);
            System.out.println(number); 
        }
        catch (NumberFormatException ex){
            ex.printStackTrace();
        }
Probar la excepción

Al igual que en el ejemplo anterior, el código anterior lanzará una excepción.

Este es el resultado del código anterior:

java.lang.NumberFormatException: For input string: "25TA"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at OOP.StringTest.main(StringTest.java:42)
Excepción

También podemos crear un método para comprobar si la cadena pasada es numérica o no antes de utilizar los métodos mencionados.

He creado un método sencillo para comprobar si la cadena pasada es numérica o no.

public class StringTest {
    public static void main(String[] args) {
        String str = "25";
        String str1 = "25.06";
        System.out.println(isNumeric(str));
        System.out.println(isNumeric(str1));
    }

    private static boolean isNumeric(String str){
        return str != null && str.matches("[0-9.]+");
    }
}
Comprobar si es una cadena es solo de numeros

La salida es:

true
true
Salida

El método isNumeric() toma una cadena como argumento. Primero comprueba si es null o no. Después utilizamos el método matches() para comprobar si contiene dígitos del 0 al 9 y un carácter de punto.

Esta es una forma sencilla de comprobar los valores numéricos. Puedes escribir o buscar en Google expresiones regulares más avanzadas para capturar valores numéricos dependiendo de tu caso de uso.

Es una buena práctica comprobar si la cadena pasada es numérica o no antes de intentar convertirla a entero.

Gracias por leer.

Imagen por ?? Janko Ferlič en Unsplash

Puedes conectarte conmigo en Medium.

¡Feliz codificación!