HOWTO · Java
Validação de entrada em Java
Este artigo apresenta como validar a entrada em Java.
Nesta página
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