• 직접 키보드로부터 읽는 자바 표준 입력 스트림
• 키 값을 바이트(문자x)로 리턴
• 키의 값을 바이트 데이터로 넘기므로 응용 프로그램이 문자 정보로 변환해야 한다.
• System.in 에게 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수 등 원하는 타입으로 변환하여 리턴하는 클래스
• java.util.Scanner 클래스
• Scanner 클래스의 객체 생성
import java.util.Scanner; // import 문을 사용하여야 한다.
...
...
...
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
• Scanner는 입력되는 값을 공백으로 구분되는 단위로 읽는다.
• 공백 문자 : \t, \r, \n, \r, ' '
• 구현자가 원하는 다양한 타입의 값으로 바꾸어 읽을 수 있다.
Scanner sc = new Scanner(System.in);
int price = sc.nextInt();
double weight = sc.nextDouble();
boolean married = sc.nextBoolean();
String name = sc.next();
next( ) : 다음 토큰을 문자열로 리턴
nextByte( ) : 다음 토큰을 byte 타입으로 리턴
nextShort( ) : 다음 토큰을 short 타입으로 리턴
nextInt( ) : 다음 토큰을 int 타입으로 리턴
nextLong( ) : 다음 토큰을 long 타입으로 리턴
nextDouble( ) : 다음 토큰을 double 타입으로 리턴
nextBoolean( ) : 다음 토큰을 boolean 타입으로 리턴
nextLine( ) : '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열을 리턴
close( ) : Scanner 사용 종료
hasNext( ) : 현재 입력된 토큰이 있으면 true, 아니면 토큰이 입력될 때 대기
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("상품명, 무게, 제조사, 반품여부를 빈칸으로 분리하여");
String name = sc.next(); // 문자열을 읽기
System.out.print("상품명 : " + name+ ", ");
Double weight = sc.nextDouble(); // 실수을 읽기
System.out.print("무게 : " + weight + "kg, ");
String company = sc.next(); // 문자열을 읽기
System.out.print("제조사 : " + company + "이며, ");
boolean reItem = sc.nextBoolean(); // 논리값을 읽기
System.out.println("반품 여부는 " + reItem + "입니다.");
sc.close(); // Scanner의 사용 종료
}
}
• 실행 결과
상품명, 무게, 제조사, 반품여부를 빈칸으로 분리하여 입력
바나나 24 바나공장 false
상품명 : 바나나, 무게 : 24.0kg, 제조상 : 바나공장이며, 반품 여부는 false입니다.