¿Cómo comprobarías que la cadena "3
" es mayor que 0? No puedes comparar directamente una cadena con un número, así que necesitarás aprender cómo convertir cadenas que contienen números a tipos de datos numéricos (int
, short
, long
, float
o double
). Esta es una operación habitual en todos los lenguajes de programación, y Java, para este propósito, ofrece los métodos valueOf
, existentes en todas las clases envoltorio descendientes de la clase Number: Integer, Long, Short, Float
y Double
.
Veamos un ejemplo de su uso para un número de doble precisión, para el resto de las clases es similar:
String c="1234.5678";
double n;
try {
n=Double.valueOf(c).doubleValue();
} catch (NumberFormatException e)
{ /* Código a ejecutar si no se puede convertir */ }
Fijate en el código anterior, en él puedes comprobar cómo la cadena c contiene en su interior un número, pero escrito con dígitos numéricos (caracteres). El código escrito esta destinado a transformar la cadena en número, usando el método valueOf
. Este método lanzará la excepción NumberFormatException
si no consigue convertir el texto a número. En el siguiente archivo, tienes un ejemplo más completo, donde aparecen también ejemplos para las otros tipos numéricos:
Ejemplo de conversión de cadena de texto a número.
Seguro que ya te vas familiarizando con este embrollo y encontrarás interesante todas estas operaciones. Ahora te planteamos otro reto: imagina que tienes que mostrar el precio de un producto por pantalla. Generalmente, si un producto vale, por ejemplo 3,3 euros, el precio se debe mostrar como "3,30 €
", es decir, se le añade un cero extra al final para mostrar las centésimas. Con lo que sabemos hasta ahora, usando la concatenación en Java, podemos conseguir que una cadena se concatene a un número flotante, pero el resultado no será el esperado. Prueba el siguiente código:
float precio=3.3f;
System.out.println("El precio es: "+precio+"€");
Si has probado el código anterior, habrás comprobado que el resultado no muestra "3,30 €
" sino que muestra "3,3 €
". ¿Cómo lo solucionamos? Podríamos dedicar bastantes líneas de código hasta conseguir algo que realmente funcione, pero no es necesario, dado que Java y otros lenguajes de programación (como C), disponen de lo que se denomina formateado de cadenas. En Java podemos "formatear" cadenas a través del método estático format
disponible en el objeto String
. Este método permite crear una cadena proyectando los argumentos en un formato específico de salida. Lo mejor es verlo con un ejemplo, veamos cuál sería la solución al problema planteado antes:
float precio=3.3f;
String salida=string.format ("El precio es: %.2f €", precio));
System.out.println(salida);
El formato de salida, también denominado "cadena de formato", es el primer argumento del método format
. La variable precio
, situada como segundo argumento, es la variable que se proyectará en la salida siguiendo un formato concreto. Seguro que te preguntarás, ¿qué es "%.2f
"? Pues es un especificador de formato, e indica cómo se deben formatear o proyectar los argumentos que hay después de la cadena de formato en el método format
.
Operación consistente en especificar como queremos que se transforme un dato, generalmente numérico, en cadena. Dicha conversión permite especificar de forma precisa cosas como el número de decimales que queremos que tenga el resultado.
Es una subcadena dentro de una cadena que especifica como se debe formatear un dato concreto que se pasa como argumento al método format. El especificador de formato está formado por un carácter de escape seguido de varios símbolos destinados a describir como será el formato de salida.