Validação de entrada em Java

Rashmi Patidar 12 outubro 2023
Validação de entrada em Java

A validação é o processo de verificar a entrada do usuário ou os valores do banco de dados em relação a restrições específicas. A validação é aplicada para reduzir o tempo gasto pelo programa para executar a lógica de negócios real e, em seguida, encontrar problemas na entrada do usuário. O processo aumenta o desempenho e, portanto, resulta em quaisquer sessões de depuração adicionais em caso de falha.

No código Java, pegamos a entrada do usuário usando a classe Scanner. Existem vários métodos da classe Scanner que ajudam na validação do conteúdo de entrada.

Abaixo está o bloco de código que explica os métodos.

import java.util.Scanner;

public class InputValidation {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter any text: ");
    while (!scanner.hasNext("quit")) {
      System.out.println(scanner.hasNextInt() ? "The Input text is int: " + scanner.nextInt()
              : scanner.hasNextLong()         ? "The Input text is long: " + scanner.nextLong()
              : scanner.hasNextDouble()       ? "The Input text is double: " + scanner.nextDouble()
              : scanner.hasNextBoolean() ? "The Input text is boolean: " + scanner.nextBoolean()
                                         : "The Input text is String: " + scanner.next());
    }
  }
}

No bloco de código acima, uma instância da classe Scanner é criada. As chamadas do construtor usando uma nova palavra-chave usam um parâmetro Input Stream, digamos System.in.

Agora o trabalho real na instância do scanner é iniciado. Primeiro, na condição while, uma verificação é aplicada para fornecer uma condição de término. A expressão usa o método hasNext da classe Scanner. O método usa um padrão para corresponder ao token de entrada. E verifica se a entrada é algo diferente do texto quit. O método hasNext lança IllegalStateException quando o objeto do scanner é fechado.

Agora, quando o bloco é iniciado, a entrada é validada usando o método hasNextInt. Ele retorna verdadeiro apenas se o texto inserido for o valor int. O texto de entrada é verificado no console como um int usando o método nextInt e impresso no console. O método nextInt lança InputMismatchException quando o texto não corresponde ao Integer Regex, IllegalStateException quando a instância do scanner é fechada.

Agora, todo este bloco de verificação está escrito em instruções ternárias aninhadas. Se a primeira condição for avaliada como falsa, outra verificação será aplicada. O método hasNextDouble interpreta o texto como duplo e retorna verdadeiro se houver correspondência. O método nextDouble() retorna um valor duplo da saída padrão e imprime o mesmo no console, caso contrário, passa para a próxima verificação. O método nextDouble() lança InputMismatchException quando o próximo token do console não corresponde ao Float Regex, IllegalStateException quando a instância do scanner é fechada.

Outra verificação está usando o método hasNextBoolean. Este método verifica o valor booleano, verdadeiro ou falso. Se o valor retornado for booleano true, o uso de nextBoolean() é feito para obter a entrada do console e imprimir a mesma na tela de saída. Caso contrário, prossegue com a seção de outros operadores ternários. O método nextBoolean lança InputMismatchException quando o próximo token não encontra um valor booleano, IllegalStateException quando a instância do scanner é fechada.

Seguindo o mesmo padrão, a entrada é validada usando o método next. O método se torna a última condição da seção de verificação de entrada while. O método pesquisa e retorna todo o texto anterior do console. A função pode bloquear a saída do console enquanto espera pela entrada para fazer a varredura. O método sempre retorna um valor String. A avaliação trata os caracteres especiais também como strings e imprime na saída. A mesma exceção é lançada como outros métodos. Diga IllegalStateException se o scanner estiver fechado ou NoSuchElementException quando não houver mais tokens disponíveis.

Abaixo está o bloco de saída para o código de validação acima.

Enter any text: 
--
The input text is String: --
67
The input text is int: 67
1234567890000000
The input text is long: 1234567890000000
true
The input text is boolean: true
FALSE
The input text is boolean: false
90.08939782639
The input text is double: 90.08939782639
hi
The input text is String: hi
quit
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artigo relacionado - Java Input