Cómo comprobar si una cadena es un número en Java

Mohammad Irfan 12 octubre 2023
  1. Comprobar si una cadena es un número en Java
  2. Comprueba si una cadena es un número usando la clase Character en Java
  3. Comprobar si una cadena es un número usando la biblioteca de Apache en Java
  4. Comprueba si una cadena es un número usando la clase Double en Java
  5. Comprueba si una cadena es un número en Java 8
Cómo comprobar si una cadena es un número en Java

Este tutorial introduce cómo comprobar si una cadena es numérica en Java y enumera algunos códigos de ejemplo para entenderla.

Hay varias maneras de comprobar una cadena numérica como usar regex, la clase Double, la clase Character o el enfoque funcional de Java 8, etc.

Comprobar si una cadena es un número en Java

Una String es numérica si y sólo si contiene números (dígitos numéricos válidos). Por ejemplo, "123" es una cadena numérica válida mientras que "123a" no es una cadena numérica válida porque contiene un alfabeto.

Para comprobar la cadena numérica, podríamos usar el método matched() de la clase String que toma regex como argumento y devuelve un valor booleano, ya sea true o false.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "123";
    boolean isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
    str = "121xy";
    isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
    str = "0x234";
    isNumeric = str.matches("[+-]?\\d*(\\.\\d+)?");
    System.out.println(isNumeric);
  }
}

Resultado:

true
false
false

Comprueba si una cadena es un número usando la clase Character en Java

Podemos usar el método isDigit() de la clase Character para comprobar cada carácter en un bucle. Devuelve un valor true o false.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = true;
    for (int i = 0; i < str.length(); i++) {
      if (!Character.isDigit(str.charAt(i))) {
        isNumeric = false;
      }
    }
    System.out.println(isNumeric);
  }
}

Resultado:

true

Comprobar si una cadena es un número usando la biblioteca de Apache en Java

Si estás usando Apache, puedes usar el método isNumeric() de la clase StringUtils, que devuelve true si contiene una secuencia numérica.

import org.apache.commons.lang3.StringUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = StringUtils.isNumeric(str);
    System.out.println(isNumeric);
    str = "123xyz";
    isNumeric = StringUtils.isNumeric(str);
    System.out.println(isNumeric);
  }
}

Resultado:

true
false

Comprueba si una cadena es un número usando la clase Double en Java

Podemos usar el método parseDouble() de la clase Doble que convierte una cadena en doble y devuelve un valor de tipo doble. Lanza una excepción si no puede ser analizado.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    try {
      Double.parseDouble(str);
      System.out.println("It is a numerical string");
    } catch (NumberFormatException e) {
      System.out.println("It is not a numerical string");
    }
  }
}

Resultado:

It is a numerical string

Comprueba si una cadena es un número en Java 8

Si utiliza Java 8 o una versión superior, puede utilizar este ejemplo para comprobar la cadena numérica. Aquí, el método isDigit() de la clase Character se pasa en allMatch() como referencia del método.

public class SimpleTesting {
  public static void main(String[] args) {
    String str = "1123";
    boolean isNumeric = str.chars().allMatch(Character::isDigit);
    System.out.println(isNumeric);
    str = "ab234";
    isNumeric = str.chars().allMatch(Character::isDigit);
    System.out.println(isNumeric);
  }
}

Resultado:

true
false

Artículo relacionado - Java String