Java에서 입력 유효성 검사

Rashmi Patidar 2023년10월12일
Java에서 입력 유효성 검사

유효성 검사는 특정 제약 조건에 대해 데이터베이스의 사용자 입력 또는 값을 확인하는 프로세스입니다. 실제 비즈니스 로직을 실행하고 사용자 입력에서 문제를 찾는 데 걸리는 시간을 줄이기 위해 유효성 검사가 적용됩니다. 이 프로세스는 성능을 향상 시키므로 실패시 추가 디버깅 세션이 발생합니다.

Java 코드에서Scanner클래스를 사용하여 사용자 입력을받습니다. 입력 내용 유효성 검사에 도움이되는 Scanner 클래스의 다양한 메서드가 있습니다.

아래는 방법을 설명하는 코드 블록입니다.

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());
    }
  }
}

위의 코드 블록에서Scanner클래스의 인스턴스가 생성됩니다. 새 키워드를 사용하는 생성자 호출은System.in과 같은 입력 스트림 매개 변수를 사용합니다.

이제 스캐너 인스턴스에 대한 실제 작업이 시작됩니다. 첫째, while 조건에서는 종료 조건을 부여하기 위해 체크가 적용됩니다. 이 표현식은 Scanner 클래스hasNext메소드를 사용합니다. 메소드는 입력 토큰과 일치하는 패턴을 사용합니다. 그리고 입력이quit텍스트가 아닌 다른 것인지 확인합니다. hasNext메소드는 스캐너 오브젝트가 닫힐 때IllegalStateException을 발생시킵니다.

이제 블록이 시작되면hasNextInt메소드를 사용하여 입력을 검증합니다. 입력 한 텍스트가int값인 경우에만 true를 리턴합니다. 입력 텍스트는nextInt메소드를 사용하여 콘솔에서int로 스캔되고 콘솔에 인쇄됩니다. nextInt메소드는 텍스트가 Integer Regex와 일치하지 않을 때InputMismatchException을, 스캐너 인스턴스가 닫히면IllegalStateException을 발생시킵니다.

이제이 체크 블록 전체가 중첩 된삼항문으로 작성됩니다. 첫 번째 조건이 거짓으로 평가되면 다른 검사가 적용됩니다. hasNextDouble메소드는 텍스트를 double로 해석하고 일치하는 경우 true를 리턴합니다. nextDouble()메소드는 표준 출력에서 ​​double 값을 리턴하고 콘솔에서 동일하게 인쇄하고 그렇지 않으면 다음 검사를 위해 이동합니다. nextDouble()메소드는 콘솔의 다음 토큰이 Float Regex와 일치하지 않을 때InputMismatchException을, 스캐너 인스턴스가 닫히면IllegalStateException을 발생시킵니다.

또 다른 검사는hasNextBoolean메소드를 사용하는 것입니다. 이 메소드는boolean값 (true 또는 false)을 확인합니다. 반환 된 값이 boolean true이면nextBoolean()을 사용하여 콘솔 입력을 받아 출력 화면에 동일하게 인쇄합니다. 그렇지 않으면 삼항 연산자 else 섹션으로 진행합니다. nextBoolean메소드는 다음 토큰이 부울 값을 찾지 못하면InputMismatchException을, 스캐너 인스턴스가 닫히면IllegalStateException을 발생시킵니다.

동일한 패턴에 따라next메소드를 사용하여 입력의 유효성을 검사합니다. 이 메서드는 while 입력 확인 섹션의 마지막 조건이됩니다. 이 메서드는 콘솔에서 전체 앞 텍스트를 검색하고 반환합니다. 이 기능은 입력 스캔을 기다리는 동안콘솔 출력을 차단할 수 있습니다. 이 메서드는 항상 문자열 값을 반환합니다. 평가는 특수 문자도 문자열로 처리하고 출력에 인쇄합니다. 다른 메소드와 동일한 예외가 발생합니다. 스캐너가 닫혀 있으면IllegalStateException이라고 말하고 사용 가능한 토큰이 더 이상 없으면NoSuchElementException이라고 말합니다.

아래는 위 유효성 검사 코드의 출력 블록입니다.

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

관련 문장 - Java Input