Cómo comprobar si una cadena es un entero en Java

Rupam Yadav 12 octubre 2023
  1. Comprobar si la Cadena es un entero por Character.digit() en Java
  2. Comprueba si la cadena es un entero por string.matches(pattern) en Java
  3. Comprueba si la cadena es un entero por Scanner.nextInt(radix) en Java
Cómo comprobar si una cadena es un entero en Java

Las cadenas y los números enteros en Java se utilizan a menudo para almacenar datos, pero a veces podríamos querer comprobar si un tipo de datos contiene elementos compatibles con otro tipo de datos o no.

Como sabemos que una cadena puede contener alfabetos, símbolos y números, es útil para determinar el tipo de datos que nuestra cadena contiene. Vamos a ver ejemplos de comprobación de la cadena con diferentes métodos.

Comprobar si la Cadena es un entero por Character.digit() en Java

Podemos ver que el siguiente ejemplo tiene tres String que podemos pasar a la función isStringInteger(stringToCheck, radix). Radix nos dice el rango del número que queremos obtener, aquí estamos usando 10, que permite el rango de 0 a 9.

Character.digit() comprueba cada carácter de la cadena y devuelve un número más de 0 si es un dígito. También se pueden agregar declaraciones condicionales adicionales para que el resultado sea preciso.

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "3030";
    String str3 = "-9";

    boolean integerOrNot1 = isStringInteger(str1, 10);
    System.out.println("Is " + str1 + " an Integer? -> " + integerOrNot1);

    boolean integerOrNot2 = isStringInteger(str2, 10);
    System.out.println("Is " + str2 + " an Integer? -> " + integerOrNot2);

    boolean integerOrNot3 = isStringInteger(str3, 10);
    System.out.println("Is " + str3 + " an Integer? -> " + integerOrNot3);
  }

  public static boolean isStringInteger(String stringToCheck, int radix) {
    if (stringToCheck.isEmpty())
      return false; // Check if the string is empty
    for (int i = 0; i < stringToCheck.length(); i++) {
      if (i == 0 && stringToCheck.charAt(i) == '-') { // Check for negative Integers
        if (stringToCheck.length() == 1)
          return false;
        else
          continue;
      }
      if (Character.digit(stringToCheck.charAt(i), radix) < 0)
        return false;
    }
    return true;
  }
}

Resultado:

Is 12000003 an Integer? -> true

Comprueba si la cadena es un entero por string.matches(pattern) en Java

En el siguiente método para identificar si la cadena contiene elementos enteros, podemos usar la Expresión Regular, que puede ayudar a coincidir con un patrón específico, es decir, un valor numérico. -?\\d+ es la expresión que podemos hacer coincidir con la cadena y obtener el resultado en tipo booleano.

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "123";
    String str3 = "000000009";

    boolean integerOrNot1 = str1.matches("-?\\d+");
    System.out.println("Is " + str1 + " an Integer? -> " + integerOrNot1);

    boolean integerOrNot2 = str2.matches("-?\\d+");
    System.out.println("Is " + str2 + " an Integer? -> " + integerOrNot2);

    boolean integerOrNot3 = str3.matches("-?\\d+");
    ;
    System.out.println("Is " + str3 + " an Integer? -> " + integerOrNot3);
  }
}

Resultado:

Is ABC123 an Integer? -> false
Is 123 an Integer? -> true
Is 000000009 an Integer? -> true

Comprueba si la cadena es un entero por Scanner.nextInt(radix) en Java

También podemos usar la famosa clase Scanner() de Java. Su método nextInt() puede comprobar si la cadena dada es de tipo Int o no.

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "3030";
    String str3 = "000000009";

    System.out.println("Is " + str1 + " an Integer? -> " + isStringInteger(str1, 10));
    System.out.println("Is " + str2 + " an Integer? -> " + isStringInteger(str2, 10));
    System.out.println("Is " + str3 + " an Integer? -> " + isStringInteger(str3, 10));
  }

  public static boolean isStringInteger(String stringToCheck, int radix) {
    Scanner sc = new Scanner(stringToCheck.trim());
    if (!sc.hasNextInt(radix))
      return false;
    sc.nextInt(radix);
    return !sc.hasNext();
  }
}

Resultado:

Is ABC123 an Integer? -> false
Is 3030 an Integer? -> true
Is 000000009 an Integer? -> true
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java String

Artículo relacionado - Java Int