Scanner
클래스는 사용자와 상호작용할 때 중요한 도구로 사용된다. 사용자에게 질문을 던지고, 이에 대한 사용자의 답변을 받아오는 프로그램과 사용자 간의 대화 창구 역할이다.
예를 들어, 간단한 계산기를 만들 때, 프로그램은 이렇게 묻는다.
System.out.print("첫 번째 숫자를 입력하세요: ");
이때, scanner는 질문을 받아서 사용자로부터 입력을 받는거다.
이 메서드는 사용자로부터 단어 하나를 입력받을 때 사용한다. 예를 들어, 간단한 사용자 인증 시스템을 만들 때 이름을 입력받을 수 있다.
String name = scanner.next();
중요한 점은 next()
가 공백(스페이스)나 개행(엔터) 을 기준으로 단어 하나를 가져온다는 점! 사용자가 "혜연 바보"를 입력하면, "혜연"만 가져오게 됨
단어 하나가 아니라 문장 전체를 가져올 때, nextLine()
메서드를 사용한다. 엔터 키가 눌릴 때까지 입력된 모든 것을 가져온다. 예를 들어, 투두 리스트 시스템에서 사용자의 할 일을 문장으로 입력받을 때 유용하다.
String task = scanner.nextLine();
사용자에게 숫자를 물을 때는 nextInt()
를 사용한다.
int num1 = scanner.nextInt();
여기서 주의할 점은,nextInt()
는 숫자만 가져오기에 개행 문자(엔터)는 남게된다. 그래서 나중에 문자열을 입력받고 싶다면, 개행문자를 처리하기 위해 nextLine()
을 사용해야 한다.
는 메서드
사용자에게 실수(소수점이 있는 숫자)를 입력받을 때는 nextDouble()
을 사용한다.
double price = scanner.nextDouble();
프로그램이 참 또는 거짓의 질문을 던져야 할 때, 예를 들어 "계산기를 계속 사용하겠습니까? (y/n)" 처럼, nextBoolean()
이 사용된다. 이 메서드는 true, false 값만 입력받는다.
boolean running = scanner.nextBoolean();
전체 문자열 중 첫 글자만 가져오고 싶을 때, charAt(0)
을 사용한다.
char choice = scanner.next().charAt(0);
사용자가 "yes"를 입력하더라도, "y"만 사용하게 되는 거다.
마지막으로, 프로그램이 입력을 기다리는 동안 입력이 더 있는지 확인하는 메서드이다. hasNext()
는 다음 단어가 있는지 확인하고, HasNextLine()
은 다음에 줄 단위의 입력이 있는지 확인한다. 이들은 파일을 읽거나 긴 입력을 처리할 떄 유용하게 사용된다.
while(scanner.hasNextLine(0){
String line = scanner.nextLine();
}
Scanner
클래스는 자바 프로그램에서 입력을 쉽게 처리할 수 있는 도구이다. 위에서 살펴본 메서드들을 적절하게 사용해 프로그램과 사용자 간의 상호작용을 보다 효율적으로 맏들 수 있을 것