Los objetos de cadena se representan como una cadena de caracteres.
Si ha trabajado en Java Swing, tiene componentes como JTextField y JTextArea que usamos para obtener nuestra entrada de la GUI. Toma nuestra entrada como una cadena.
Si queremos hacer una calculadora simple usando Swing, necesitamos 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 usar Integer.valueOf()
y Integer.parseInt()
para convertir una cadena en un número entero.
1. Utilice Integer.parseInt () para convertir una cadena en un entero
Este método devuelve la cadena como un tipo primitivo int . Si la cadena no contiene un entero válido, arrojará una NumberFormatException.
Por lo tanto, cada vez que convertimos una cadena en un int, debemos ocuparnos de esta excepción colocando el código dentro del bloque try-catch.
Consideremos un ejemplo de conversión de una cadena en un int usando Integer.parseInt()
:
String str = "25"; try{ int number = Integer.parseInt(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }
Intentemos romper este código ingresando un número entero no válido:
String str = "25T"; try{ int number = Integer.parseInt(str); System.out.println(number); } catch (NumberFormatException ex){ ex.printStackTrace(); }
Como puede ver en el código anterior, hemos intentado convertir 25T
a un número entero. Esta no es una entrada válida. Por lo tanto, debe lanzar una NumberFormatException.
Aquí está la salida 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)
A continuación, consideraremos cómo convertir una cadena en un número entero usando el Integer.valueOf()
método.
2. Utilice Integer.valueOf () para convertir una cadena en un entero
Este método devuelve la cadena como un objeto entero . Si observa la documentación de Java, Integer.valueOf()
devuelve un objeto entero que es equivalente a un new Integer(Integer.parseInt(s))
.
Colocaremos nuestro código dentro del bloque try-catch cuando usemos este método. Consideremos un ejemplo usando el Integer.valueOf()
método:
String str = "25"; try{ Integer number = Integer.valueOf(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }
Ahora, intentemos romper el código anterior ingresando 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(); }
Al igual que en el ejemplo anterior, el código anterior generará una excepción.
Aquí está la salida 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)
También podemos crear un método para verificar si la cadena pasada es numérica o no antes de usar los métodos mencionados anteriormente.
He creado un método simple para verificar 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.]+"); } }
La salida es:
true true
El isNumeric()
método toma una cadena como argumento. Primero comprueba si lo es null
o no. Después de eso, usamos el matches()
método para verificar si contiene dígitos del 0 al 9 y un carácter de punto.
Esta es una forma sencilla de verificar valores numéricos. Puede escribir o buscar en Google expresiones regulares más avanzadas para capturar números según su caso de uso.
Es una buena práctica comprobar si la cadena pasada es numérica o no antes de intentar convertirla en entero.
Gracias por leer.
Imagen de la publicación de ?? Janko Ferlič en Unsplash
Puedes conectarte conmigo en Medium.
¡Feliz codificación!