Nuevo

Cómo convertir cadenas a números y viceversa en Java

Cómo convertir cadenas a números y viceversa en Java

Por lo general, en una interfaz gráfica de usuario, habrá campos de texto que esperan que el usuario ingrese un valor numérico. Este valor numérico terminará en un objeto String que realmente no ayuda a su programa si desea hacer algo de aritmética. Afortunadamente, hay clases de contenedor que proporcionan métodos para convertir esos valores de cadena en números y la clase de cadena tiene un método para volver a convertirlos.

Clases de envoltura

Los tipos de datos primitivos que tratan con números (es decir, byte, int, doble, flotante, largo y corto) tienen equivalentes de clase. Estas clases se conocen como clases envolventes, ya que toman un tipo de datos primitivo y lo rodean con la funcionalidad de una clase. Por ejemplo, la clase Doble tendrá un valor doble como datos y proporcionará métodos para manipular ese valor.

Todas estas clases de envoltura tienen un método llamado valueOf. Este método toma un String como argumento y devuelve una instancia de la clase wrapper. Por ejemplo, supongamos que tenemos una cadena con el valor de diez:

Número de cadena = "10";

Tener este número como una Cadena no nos sirve, así que usamos la clase Integer para convertirlo en un objeto Integer:

Entero convertidoNúmero = Integer.valueOf (número);

Ahora el número puede usarse como un número y no como una Cadena:

convertNumber = convertNumber + 20;

También puede hacer que la conversión vaya directamente a un tipo de datos primitivo:

int convertNumber = Integer.valueOf (número) .intValue ();

Para otros tipos de datos primitivos, simplemente inserta la clase de contenedor correcta: Byte, Integer, Double, Float, Long Short.

Nota: Debe asegurarse de que la Cadena se pueda analizar en el tipo de datos apropiado. Si no puede, terminará con un error de tiempo de ejecución. Por ejemplo, tratando de convertir "diez" en un número entero:

Número de cadena = "diez";
int convertNumber = Integer.valueOf (número) .intValue ();

producirá una NumberFormatException porque el compilador no tiene idea de que "diez" se supone que es 10.

Más sutilmente, se producirá el mismo error si olvida que un 'int' solo puede contener números enteros:

Número de cadena = "10.5";
int convertNumber = Integer.valueOf (número) .intValue ();

El compilador no truncará el número, solo pensará que no cabe en un 'int' y que es hora de lanzar una NumberFormatException.

Convertir números a cadenas

Para convertir un número en una cadena sigue el mismo tipo de patrón que la clase de cadena también tiene un método valueOf. Puede tomar cualquiera de los números de tipo de datos primitivos como argumento y producir una Cadena:

int númeroTwenty = 20;

Cadena convertida = String.valueOf (numberTwenty);

que pone "20" como el valor de cadena de convertida.

o puede usar el método toString de cualquiera de las clases de contenedor:

Cadena convertida = Integer.toString (numberTwenty);

El método toString es común a todos los tipos de objetos, la mayoría de las veces es solo una descripción del objeto. Para las clases de contenedor, esta descripción es el valor real que contienen. En esta dirección, la conversión es un poco más robusta. Si se usara la clase Doble en lugar del Entero:

Cadena convertida = Double.toString (numberTwenty);

el resultado no causaría un error de tiempo de ejecución. La variable convertida contendría la Cadena "20.0".

También hay una forma más sutil de convertir números cuando concatena cadenas. Si una Cadena se construyera como:

Cadena aboutDog = "Mi perro tiene" + númeroTwenty + "años".

La conversión del número intTwenty se realiza automáticamente.