Como verificar se uma string é um número inteiro em Java

Rupam Yadav 12 outubro 2023
  1. Verificar se a String é um Inteiro por Character.digit() em Java
  2. Verifique se a string é um Inteiro por string.matches(padrão) em Java
  3. Verifique se a String é um Inteiro por Scanner.nextInt(radix) em Java
Como verificar se uma string é um número inteiro em Java

String e Integers em Java são freqüentemente usados para armazenar dados, mas às vezes podemos querer verificar se um tipo de dado contém elementos compatíveis com outro tipo de dado ou não.

Como sabemos que uma String pode conter alfabetos, símbolos e números, é útil determinar o tipo de dados que nossa string contém. Vamos ver exemplos de verificação da string com diferentes métodos.

Verificar se a String é um Inteiro por Character.digit() em Java

Podemos ver que o exemplo a seguir tem três strings que podemos passar para a função isStringInteger(stringToCheck, radix). O radix diz o intervalo do número que queremos obter, aqui estamos utilizando 10, o que permite o intervalo de 0 a 9.

Character.digit() verifica cada caractere da string e retorna um número maior que 0, se for um dígito. Declarações condicionais adicionais também podem ser adicionadas para que o resultado seja exato.

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

Verifique se a string é um Inteiro por string.matches(padrão) em Java

No método seguinte de identificar se a string contém elementos Inteiros, podemos usar a Expressão Regular, que pode ajudar a combinar um padrão específico, ou seja, valor numérico. A expressão que podemos comparar com a string e obter o resultado em um 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

Verifique se a String é um Inteiro por Scanner.nextInt(radix) em Java

Também podemos utilizar a famosa classe Java Scanner(). Seu método nextInt() pode verificar se a string dada é do tipo Int ou não.

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

Artigo relacionado - Java String

Artigo relacionado - Java Int