Validación de entrada en Java

Rashmi Patidar 12 octubre 2023
Validación de entrada en Java

La validación es el proceso de verificar la entrada del usuario o los valores de la base de datos contra restricciones específicas. La validación se aplica para reducir el tiempo que tarda el programa en ejecutar la lógica empresarial real y luego encontrar problemas en la entrada del usuario. El proceso aumenta el rendimiento y, por lo tanto, resulta en más sesiones de depuración en caso de falla.

En el código Java, tomamos la entrada del usuario usando la clase Scanner. Hay varios métodos de la clase Scanner que ayudan en la validación del contenido de entrada.

A continuación se muestra el bloque de código que explica los 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());
    }
  }
}

En el bloque de código anterior, se crea una instancia de la clase Scanner. Las llamadas del constructor que utilizan una nueva palabra clave toman un parámetro de flujo de entrada, digamos System.in.

Ahora comienza el trabajo real en la instancia del escáner. Primero, en la condición while, se aplica un cheque para dar una condición de terminación. La expresión utiliza el método hasNext de la clase Scanner. El método toma un patrón para coincidir con el token de entrada. Y comprueba si la entrada es diferente al texto exit. El método hasNext arroja IllegalStateException cuando el objeto del escáner está cerrado.

Ahora, cuando se inicia el bloque, la entrada se valida utilizando el método hasNextInt. Devuelve verdadero solo si el texto ingresado tiene un valor int. El texto de entrada se escanea desde la consola como un int utilizando el método nextInt y se imprime en la consola. El método nextInt arroja InputMismatchException cuando el texto no coincide con Integer Regex, IllegalStateException cuando la instancia del analizador está cerrada.

Ahora todo este bloque de verificación está escrito en declaraciones ternarias anidadas. Si la primera condición se evalúa como falsa, se aplica otra verificación. El método hasNextDouble interpreta el texto como doble y devuelve verdadero si coincide. El método nextDouble() devuelve un valor doble de la salida estándar e imprime lo mismo en la consola; de lo contrario, se mueve para la siguiente verificación. El método nextDouble() arroja InputMismatchException cuando el siguiente token de la consola no coincide con Float Regex, IllegalStateException cuando la instancia del escáner está cerrada.

Otra comprobación es utilizar el método hasNextBoolean. Este método comprueba el valor booleano, verdadero o falso. Si el valor devuelto es booleano verdadero, se hace el uso de nextBoolean() para tomar la entrada de la consola e imprimir la misma en la pantalla de salida. De lo contrario, procede con la sección else de operadores ternarios. El método nextBoolean arroja InputMismatchException cuando el siguiente token no encuentra un valor booleano, IllegalStateException cuando la instancia del escáner está cerrada.

Siguiendo el mismo patrón, la entrada se valida utilizando el método next. El método se convierte en la última condición de la sección de verificación de entrada while. El método busca y devuelve todo el texto adelantado desde la consola. La función puede bloquear la salida de la consola mientras espera que la entrada escanee. El método siempre devuelve un valor de cadena. La evaluación trata los caracteres especiales también como cadenas y se imprime en la salida. Se lanza la misma excepción que otros métodos. Diga IllegalStateException si el escáner está cerrado o NoSuchElementException cuando no haya más tokens disponibles.

A continuación se muestra el bloque de salida para el código de validación anterior.

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

Artículo relacionado - Java Input