오늘은 화면에서 입력받는 Scanner 클래스에 대해 알아보겠습니다. 지금까지는 화면에 출력만 해왔는데, 이제 Scanner 클래스를 사용하여 입력받는 방법에 대해서 배워보겠습니다. 자바에서 화면으로부터 입력받는 방법은 여러 가지가 있지만, 가장 많이 쓰이는 방법은 Scanner 클래스를 사용하는 것입니다. 참고로 Scanner는 JDK 1.5버전부터 추가된 클래스입니다.
1. Scanner 클래스 사용법
먼저 Scanner 클래스를 사용하기 위해서는 아래의 한 문장을 추가해 줘야 합니다.
Scanner sc = new Scanner(System.in);
그다음엔 Scnner 클래스의 객체를 생성합니다.
Scanner sc = new Scanner(System.in);
그리고 nextLine()이라는 메서드를 호출하면, 입력 대기 상태에 있다가 입력을 마치고 '엔터(Enter)'를 누르면 입력한 내용이 문자열로 반환됩니다.
String input = sc.nextLine(); // 입력받은 내용을 input에 저장
int num = Integer.parseInt(); // 입력받은 내용을 int타입의 값으로 변환
만약 입력받은 문자열을 숫자로 변환하려면, Integer.parseInt()라는 메서드를 이용해야 합니다. 이 메서드는 문자열을 int 타입의 정수로 변환합니다.
(만약 문자열을 float 타입의 값으로 변환하려면, Float.parseFloat()라는 메서드를 이용해야 합니다.
Scanner 클래스에는 nextInt(), nextFloat()와 같이 변환 없이 숫자로 바로 입력받을 수 있는 다양한 메서드들이 있는데, 이 메서드들을 사용하면 문자열을 숫자로 변환하는 수고는 하지 않아도 됩니다.
Scanner의 다양한 메서드는 아래에서 알아보겠습니다.
2. Scanner의 메서드
위의 이미지는 Scanner의 메서드입니다. Scanner 클래스는 토큰 단위로 읽습니다. 토큰이란 Spacebar, Tab, Enter와 같이 공백문자로 구분되는 요소를 말합니다.
Scanner의 메서드를 예제로 알아보겠습니다.
Ex1
문자열 변수인 name, 문자열 변수인 gender, 정수형 변수인 year, 실수형 변수인 grade를 Scanner 메서드를 이용하여 설정했습니다. grade는 정수형 변수로 해도 되지만, 실수형 결과를 보여주기 위해 실수형으로 설정했습니다. " "는 띄어쓰기를 해주기 위해 넣어주고, Scanner를 닫는 sc.close();를 넣어주었습니다.
결과
Console 창에 입력한 순서대로 출력이 나온 것을 알 수 있습니다. grade에 1이라고 입력했지만, 실수형이기 때문에 1.0으로 나온다는 것도 알 수 있습니다.
3. Scanner 사용 시 주의사항
int num = sc.nextInt();
정수를 입력받아서 num 변수에 저장을 하는 문장입니다. 그러나 이 메서드는 화면에서 연속으로 입력받아서 사용하기에 까다롭습니다. 차라리 모든 값을 mextLine()으로 입력받아서 적절히 변환하는 것이 더 낫습니다.