Scanner 클래스
- 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스
- java.util.Scanner
- Scanner는 입력되는 키 값을 공백으로 구분되는 토큰 단위로 읽는다.
- 공백 문자 : ' \t ',' \f ',' \r ',' ',' \n '
- 개발자가 원하는 타입 값으로 쉽게 읽을 수 있다.
- 프로그램을 실행시키고 콘솔창에 문자열을 입력하고 'Enter'를 누르면 된다.
Scanner(스캐너) 기본 사용법
import java.util.Scanner; //기본적으로 import 문 필요
Scanner scan = new Scanner(System.in); // Scanner 객체
- System.in을 사용하여 키보드 입력 값을 읽고 원하는 타입으로 변환하여 리턴한다.
* System.in
- 키보드와 연결된 자바의 표준 입력 스트림이다.
- 입력되는 키를 바이트로 리턴하는 저수준 스트림이다.
- System.in을 직접 사용하면 바이트를 문자나 숫자로 변환하는 많은 어려움이 있다.
*간단한 예시
String name = scan.next(); // "HAN"
String city = scan.next(); // "INCHEON"
int age = scan.nextInt(); // 25
double weight = scan.nextDouble(); // 65.1
boolean single = scan.nextBoolean(); // true
-스캐너(Scanner)의 주요 메소드-
메소드 |
설명 |
String next() |
다음 토큰을 문자열로 리턴 |
byte nextByte() |
다음 토큰을 byte 타입으로 리턴 |
short nextShort() |
다음 토큰을 short 타입으로 리턴 |
int nextInt() |
다음 토큰을 int 타입으로 리턴 |
long nextLong() |
다음 토큰을 long 타입으로 리턴 |
float nextFloat() |
다음 토큰을 float 타입으로 리턴 |
double nextDouble() |
다음 토큰을 double 타입으로 리턴 |
String nextLine() |
' \n '을 포함하는 한 라인을 읽고 ' \n '을 버린 나머지만 리턴 |
void close() |
Scanner의 사용 종료 |
boolean hasNext() |
현재 입력된 토큰이 있으면 true, 아니면 새로운 입력이 들어올 때까지 무한정 기다려서, 새로운 입력이 들어오면 그 때 true 리턴. ctrl + z 키가 입력되면 입력 끝이므로 false 리턴 |
예제_1)
import java.util.Scanner;
public class JavaScanner{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name, address;
int age;
double weight;
name = scan.next();
address = scan.next();
age = scan.nextInt();
weight = scan.nextDouble();
System.out.println(name + address + age + weight);
scan.close();
}
}
HAN INCHEON 25 70
이런식으로 한줄로 치게되면 Scanner는 띄어쓰기 기준 즉 토큰단위로 하나씩 읽기때문에
각각의 순서대로 위에서 선언된 변수로 입력된다.
변수 타입에 맞게 가져오기때문에 타입에 맞춰서 사용해 주야합니다.
그중에서 유독 nextLine() 과 섞에 사용할 경우에는 주의가 필요합니다.
import java.util.Scanner;
public class JavaScanner{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name;
int age;
System.out.println("나이를 입력하세요.");
age = scan.nextInt();
System.out.println("이름을 입력하세요.");
name = scan.nextLine();
System.out.printf("나이는 %d입니다.%n",age);
System.out.printf("이름은 %s입니다.%n",name);
scan.close();
}
}
실행결과
나이를 입력하세요. 25
이름을 입력하세요.
나이는 25입니다.
이름은 입니다.
nextInt()와 같이 타입을 지정해서 받는 메소드는 'Enter'값을 무시하고 해당 타입만 받아 변환하여 반환하는데
이때 컴퓨터 내부에서는 ' Enter '값이 아직 남아있기 때문에 nextLine()에서 ' Enter '값을 받아들이고 그대로 입력되어 종료되는것입니다. 분명 입력할때는 25 하고 엔터를 눌렀을 뿐인데 말이죠 주의해주세요!
그리고 scan을 굳이 close() 로 닫아줄 필요는없지만 닫아주는 습관을 기르도록 합시다.
'JAVA HTML JAVASCRIPT > 소오스' 카테고리의 다른 글
쿠키와 세션 (0) | 2021.04.25 |
---|---|
반복문(for문, while문, do-while문) (0) | 2021.04.24 |
자바 암호화와 복호화 (0) | 2021.04.23 |
JAVA SHA-256 암호화 방법 (0) | 2021.04.23 |
웹접근성을 향상시키기 위한 태그 속성을 알아보자~ (0) | 2021.04.21 |