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 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