HOWTO · Java

Verifique se a entrada é inteira em Java

Este artigo apresenta como determinar se uma entrada é inteira em Java.

O problema afirma que precisamos verificar se a entrada obtida na linguagem Java é um número inteiro.

Verifique se a entrada é inteira usando o método hasNextInt em Java

O System é uma classe que possui métodos e campos estáticos. Nunca podemos instanciar o objeto disso. O objeto in é o fluxo de entrada padrão. Este fluxo já está aberto e pronto para fornecer dados de entrada.

O hasNextMethod está presente na classe Scanner e retorna verdadeiro se o próximo token nesta entrada do scanner puder ser avaliado como um valor int. O método lança IllegalStateException se o objeto do scanner for fechado.

package checkInputIsInt;

import java.util.Scanner;

public class CheckIntegerInput {
  public static void main(String[] args) {
    System.out.print("Enter the number: ");
    Scanner scanner = new Scanner(System.in);
    if (scanner.hasNextInt()) {
      System.out.println("The number is an integer");
    } else {
      System.out.println("The number is not an integer");
    }
  }
}

Na primeira linha, a entrada é obtida do usuário usando a entrada do console. Como o texto inserido é um número, o número é um inteiro que é impresso.

Enter the number: 1
The number is an integer

Como o texto inserido não é um número, a instrução da condição else é impressa.

Enter the number: Hi
The number is not an integer

Verifique se o número é inteiro usando o bloco try...catch

No bloco de código a seguir, usamos a classe Scanner para obter a entrada do usuário do console. A classe Scanner possui o método next. Ele lança NoSuchElementException se não houver mais tokens disponíveis e IllegalStateException se este scanner estiver fechado.

public class CheckIntegerInput {
  public static void main(String[] args) {
    System.out.print("Enter the number : ");
    Scanner scanner = new Scanner(System.in);
    try {
      Integer.parseInt(scanner.next());
      System.out.println("The number is an integer");
    } catch (NumberFormatException ex) {
      System.out.println("The number is not an integer ");
    }
  }

O código acima mostrará a instrução no bloco try se o número for um inteiro. E executará a instrução presente no bloco catch se o método lançar uma Exception dele e lançar NumberFormatException se não for capaz de converter uma string para um dos tipos numéricos.

A saída do código acima é semelhante à do primeiro exemplo de código fornecido acima.