0Pricing
Java Academy · 강의

사용자 입력 검증

잘못된 입력을 적절하게 처리합니다

사용자 입력 검증은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

입력을 절대 신뢰하지 마십시오

사용자는 숫자를 입력해야 하는 곳에 문자를 입력하거나, 빈칸을 입력하거나, 범위를 벗어난 값을 입력하는 등 잘못된 값을 입력할 수 있습니다. 견고한 프로그램은 입력을 검증하고 중단하는 대신 다시 입력하도록 요청합니다.

이 단원에서는 Scanner를 사용한 우아한 입력 검증 방식을 보여 드립니다.

읽기 전에 확인하기

가장 간단한 보호 방법은 hasNextInt()입니다. 정수가 실제로 있을 때만 읽으십시오.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42");
        if (scanner.hasNextInt()) {
            System.out.println("Got: " + scanner.nextInt());
        } else {
            System.out.println("Please enter a number");
        }
        scanner.close();
    }
}

유효할 때까지 반복하기

재시도 반복문은 유효한 정수가 입력될 때까지 계속 요청합니다. 토큰이 잘못되었으면 next()로 버리고 계속 진행하십시오.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc xyz 50");
        int value = -1;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                value = scanner.nextInt();
                break;
            }
            scanner.next();
        }
        System.out.println("Accepted: " + value);
        scanner.close();
    }
}

범위 확인

값은 유형뿐 아니라 특정 범위 안에 있어야 하는 경우도 많습니다. 숫자를 읽은 다음 허용하기 전에 확인하십시오.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("7");
        int n = scanner.nextInt();
        if (n >= 1 && n <= 10) {
            System.out.println("Valid: " + n);
        } else {
            System.out.println("Out of range");
        }
        scanner.close();
    }
}

구문 분석에 try-catch 사용하기

또 다른 방법은 전체 줄을 읽은 다음 구문 분석하고, 유효하지 않은 텍스트에 대해서는 NumberFormatException을 잡는 것입니다. 이렇게 하면 버퍼를 간단하게 유지할 수 있습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("notanumber");
        String line = scanner.nextLine();
        try {
            int n = Integer.parseInt(line.trim());
            System.out.println("Parsed: " + n);
        } catch (NumberFormatException e) {
            System.out.println("Invalid number: " + line);
        }
        scanner.close();
    }
}

비어 있지 않은 텍스트 확인하기

텍스트 입력에서는 빈 내용을 거부하십시오. isBlank()는 빈 문자열이나 공백만 있는 문자열에 대해 true를 반환합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("   ");
        String name = scanner.nextLine();
        if (name.isBlank()) {
            System.out.println("Name cannot be empty");
        } else {
            System.out.println("Hello, " + name);
        }
        scanner.close();
    }
}

선택 항목 확인하기

메뉴 선택 항목에서는 동작을 수행하기 전에 값이 허용된 선택지 중 하나인지 확인하십시오.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("y");
        String choice = scanner.next().toLowerCase();
        if (choice.equals("y") || choice.equals("n")) {
            System.out.println("You chose: " + choice);
        } else {
            System.out.println("Please enter y or n");
        }
        scanner.close();
    }
}

재사용 가능한 검증 메서드

검증을 메서드로 추출하면 로직을 재사용할 수 있습니다. 여기서는 한 메서드가 나이가 합리적인 범위 안에 있는지 확인합니다.

public class Main {
    static boolean isValidAge(int age) {
        return age >= 0 && age <= 120;
    }

    public static void main(String[] args) {
        System.out.println(isValidAge(30));
        System.out.println(isValidAge(-5));
    }
}

유형과 범위 결합하기

실제 입력 검증에서는 유형 확인, 범위 확인, 재시도 반복문을 하나의 견고한 루틴으로 결합하는 경우가 많습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc 200 45");
        int valid = -1;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                int n = scanner.nextInt();
                if (n >= 1 && n <= 100) {
                    valid = n;
                    break;
                }
            } else {
                scanner.next();
            }
        }
        System.out.println("Final: " + valid);
        scanner.close();
    }
}

명확한 오류 메시지

좋은 입력 검증은 사용자에게 유용한 피드백도 제공합니다. 막연한 실패 메시지 대신 무엇이 잘못되었고 무엇이 필요한지 정확하게 알려 주십시오.

public class Main {
    static String validate(String input) {
        if (input.isBlank()) return "Input is empty";
        if (!input.matches("\\d+")) return "Only digits allowed";
        return "OK";
    }

    public static void main(String[] args) {
        System.out.println(validate(""));
        System.out.println(validate("12a"));
        System.out.println(validate("123"));
    }
}

검증 전략

hasNext 계열 메서드나 try-catch로 유형을 확인하고, 범위와 빈 상태를 점검하며, 유효할 때까지 반복하고, 오류는 항상 명확하게 설명하십시오.

빠른 확인

입력 검증에 대한 지식을 확인해 보십시오.

복습

입력을 우아하게 검증하는 방법을 배웠습니다.

  • hasNextInt로 보호하거나 try-catch 안에서 구문 분석을 수행하십시오.
  • 재시도 반복문을 사용하고, 잘못된 토큰은 next()로 버리십시오.
  • 범위를 확인하고 isBlank로 빈 텍스트를 거부하십시오.
  • 재사용 가능한 검증 메서드로 추출하십시오.
  • 명확하고 구체적인 오류 메시지를 제공하십시오.

자주 묻는 질문

“사용자 입력 검증” 강의는 무료인가요?

네 — “사용자 입력 검증” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“사용자 입력 검증”에서 뭘 배우나요?

잘못된 입력을 적절하게 처리합니다 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“사용자 입력 검증” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Scanner로 입력 읽기
  2. 숫자와 줄 읽기
  3. 사용자 입력 검증
  4. BufferedReader 대안
← Java Academy(으)로 돌아가기