사용자 입력 검증
잘못된 입력을 적절하게 처리합니다
사용자 입력 검증은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.