자바 Scanner 클래스의 next, nextInt, hasNext, hasNextInt 이해하기

자바의 Scanner 클래스는 사용자로부터 콘솔 입력을 받는 데 유용한 도구입니다. 이 클래스에서 자주 사용되는 메소드 중 next, nextInt, hasNext, hasNextInt에 대해 알아봅시다.




1. next()와 nextInt()

next()는 사용자로부터 문자열을 입력받습니다. 입력받은 문자열 중 첫 번째 토큰(공백으로 구분된 단위)만 반환합니다.
nextInt()는 사용자로부터 정수를 입력받습니다. 입력받은 값이 정수가 아니면 InputMismatchException을 발생시킵니다.


2. hasNext()와 hasNextInt()

hasNext()와 hasNextInt()는 Scanner 클래스가 제공하는 메소드로, 다음 토큰의 유무와 타입을 확인하는 역할을 합니다.

hasNext()는 입력 스트림에 다음 토큰이 있는지 확인합니다. 만약 다음 토큰이 있으면 true를 반환하고, 없으면 false를 반환합니다.
hasNextInt()는 다음 토큰이 정수형인지를 확인합니다. 만약 정수형 토큰이 있으면 true를 반환하고, 없거나 다른 형태의 토큰이면 false를 반환합니다.

hasNext()와 hasNextInt()는 next()와 nextInt()를 사용하기 전에 입력값의 유효성을 검사하는 데 사용할 수 있습니다. 이를 통해 사용자의 잘못된 입력에 대응하거나, 입력이 더 이상 없을 때 루프를 종료하는 등의 제어를 할 수 있습니다.


import java.util.Scanner;

public class InputSample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("문자열을 입력해주세요:");
        while (!scanner.hasNext()) {
            System.out.println("문자열을 입력해주세요:");
            scanner.next();
        }
        String str = scanner.next();

        System.out.println("숫자를 입력해주세요:");
        while (!scanner.hasNextInt()) {
            System.out.println("숫자를 입력해주세요:");
            scanner.next();
        }
        int number = scanner.nextInt();

        System.out.println("입력하신 문자열: " + str);
        System.out.println("입력하신 숫자: " + number);

        scanner.close();
    }
}

이 코드는 사용자로부터 문자열과 숫자를 각각 하나씩 입력받습니다. 만약 사용자가 숫자나 문자열을 잘못 입력하면, 올바른 형태의 입력을 다시 요구합니다.

이렇게 next(), nextInt(), hasNext(), hasNextInt()를 활용하면 사용자의 입력을 효과적으로 제어하고 관리할 수 있습니다. 이들 메소드를 적절히 조합하면 사용자로부터 다양한 형태의 입력을 안전하게 처리할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다