04. 자바의 키 입력
1.System.in
System.in은 키보드 장치와 직접 연결되는 표준 입력 스트림 객체로, 키 값을 바이트 정보로 바꾸어 제공하는 저수준 스트림 객체이다. 키보드 입력을 받기 위해 System.in을 직접 사용하면 읽은 바이트 정보를 응용프로그램이 문자나 숫자로 변환해야 하는 번거로움이 있다. 그러므로 키보드에서 입력된 키를 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 고수준 스트림 클래스인 Scanner를 사용한다. Scanner는 키 입력을 위한 목적으로 자바 패키지에서 제공되는 클래스이다.
2.Scanner를 이용한 키 입력
-Scanner 객체 생성하기
Scanner scanner = new Scanner(System.in);
-import문 필요
Scanner를 사용하기 위해서는 프로그램의 맨 앞줄에 다음 import문이 필요하다.
import java.util.Scanner;
import문은 Scanner 클래스의 경로명이 java.util.Scanner임을 알려준다. 이 import문이 없느면 자바 컴파일러가 Scanner 클래스 코드가 어디에 있는지 알지 못한다.
-Scanner 클래스로 키 입력받기
Scanner 클래스는 사용자가 입력하는 키 값을 공백으로 구분하는 토큰 단위로 읽는다.
주요메소드 알아보기
String next() : 다음 토큰을 문자열로 리턴
byte nextByte() : 다음 토큰을 byte 타입으로 리턴
short nextShort() : 다음 토큰을 short 타입으로 리턴
int nextInt() : 다음 토큰을 int 타입으로 리턴
long nextLong() : 다음 토큰을 long 타입으로 리턴
float nextFloat() : 다음 토큰을 float 타입으로 리턴
double nextDouble() : 다음 토큰을 double 타입으로 리턴
boolean nextBoolean() : 다음 토큰을 boolean 타입으로 리턴
String nextLine() : '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지만 문자열로 리턴
void close() : Scanner의 사용 종료
boolean hasNext() : 현재 입력된 토큰이 있으면 true, 아니면 새로운 입력 때까지 무한정 대기. 새로운 입력이 들어올 때 true 리턴. ctrl+z키가 입력되면 입력 끝이므로 false 리턴
-Scanner 스트림 닫기
Scanner의 사용을 종료하려면 scanner.close(); 를 사용한다. 응용프로그램에서 Scanner를 닫는 코드가 없으면 컴파일 시에 경고가 발생하지만, 실행하는 데는 특별히 문제가 없고, 프로그램이 종료되면 자동으로 닫힌다.