Vous êtes sur la page 1sur 2

Validar si un dato es numrico en Java

Navegando por los diferentes foros de la red me encuentro con la siguiente pregunta. Cmo
puedo validar si un dato es numerico en Java? A uno le puede parecer una pregunta muy
bsica y tpica de alguien que ni siquiera se ha leido la documentacin, pero la cuestin es
que es una duda que existe.
De hecho, la gente busca el mtodo isNumeric(String). Que, a da de hoy, no existe dentro de
las APIs de Java, si bien, si que existe en algunas otras librerias de renombre, como puede ser
enApache Commons, en concreto org.apache.commons.lang.StringUtils.isNumeric().
Y es que en muchos casos nos vamos a encontrar con origenes de datos, donde de una forma
explicita no vengan definidos como numeros. Esta claro que una base de datos que alberga
enteros lleva la validacin implicita, que un WebService (o un simple mtodo Java) identificar
los campos como numricos,... Pero que sucede si estamos leyendo un fichero. Este de forma
implicita no lleva ninguna validacin. Es en este tipo de casos donde ser bueno el realizar
este tipo de validaciones. (Cierto es que podramos realizar una lectura directa sobre enteros).
Para poder resolver esta duda la idea es la siguiente. Partimos de las dos siguientes variables:
1. String cadenaUno = "1234";
2. String cadenaDos = "No soy un numero";

Ahora tenemos que codificar el mtodo isNumeric(String), el cual podemos utilizar a posteriori
para validar las cadenas. Esto lo haremos de la siguiente forma:
1. if (Comunes.isNumeric(cadenaUno))
2.

System.out.println(cadenaUno + " es un numero");

3. else
4.

System.out.println(cadenaUno + " NO es un numero");

5.
6. if (Comunes.isNumeric(cadenaDos))
7.

System.out.println(cadenaDos + " es un numero");

8. else
9.

System.out.println(cadenaDos + " NO es un numero");

El mtodo isNumeric(string) se apoyar en la clase Integer. La idea consiste en transformar la


cadena en un nmero. En el caso de que resulte bien, es que la cadena es un nmero (obvio),
si falla, es que nuestra cadena no ser un nmero.

isNumeric ser un mtodo esttico de la clase Comunes. Es por ello que su


utilizacin es la de Comunes.isNumeric(String).
El mtodo de Integer que nos permite transformarlo en numerico es .parseInt(String). Si va
bien devuelve el entero, sino genera la excepcin NumberFormatException. De esta forma
nuestro mtodo quedar de la siguiente forma:
1. private static boolean isNumeric(String cadena){
2.

try {

3.

Integer.parseInt(cadena);

4.

return true;

5.

} catch (NumberFormatException nfe){

6.
7.

return false;
}

8. }

Este mtodo es vlido para ciertos propositos, pero no tenemos que olvidar que existen
nmeros ms grandes que deberan de ser tratados con clases como Long o Double. Es decir,
que nuestro mtodo isNumeric(String) podra ser un poco ms complejo.
Desde aqu animo a que alguien genere la posibe implementacin, y lo publicaremos en Linea
de Codigo.