키보드로 입력받기 위한 Scanner라는 클래스
C언어에 Scanf(), Python에 Input() 등이 있다
자바에도 여러 입력 방식이 있지만 가장 쉬우며 대표적인 것이 Scanner 클래스를 이용한 입력이다
Scanner 클래스 특징
- 기본적인 데이터 타입들을 Scanner 의 메소드를 사용하여 입력받을 수 있다.
예로 들어 100을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next() 나 nextLine() 을, int(정수)로 입력받고 싶다면 nextInt() 를 사용하여 입력받으면 알아서 해당 타입으로 입력된다. - Scanner 을 사용할 시 util 패키지를 경로의 Scanner 클래스를 호출해야 한다.
자바에서 쓰이는 대부분의 클래스는 lang 패키지가 아니라면 import 을 통해 호출해주어야 한다.
Scanner 의 경우는 java.util 패키지에 있다. - 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다.
Scanner 의 입력 메소드들은 대부분 공백과 개행(' ', '\t', '\r', '\n' 등등..)을 기준으로 읽는다. 이 덕분에 사용자의 편의에 따라 쉽게 입력을 받을 수 있다.
- Import
앞서 Scanner 의 특징에서 언급했듯이 Scanner 클래스를 사용하기 위해서는 호출해주어야 한다.
자바의 경우 java.util 패키지 안에 Scanner 클래스가 있으므로 다음과 같이 import 를 쓴 후 해당 클래스 경로를 호출하도록 한다.
import java.util.Scanner; // Scanner 클래스 호출
- Scanner 객체 생성
앞서 Scanner 클래스를 사용하고자 Import 하여 호출하였다.
호출을 했으니 이제 객체생성을 할 차례다.
클래스_이름 객체_이름 = new 클래스_이름();
우리는 Scanner라는 클래스를 사용할 것이기에 클래스 이름에는 Scanner가 들어간다
객체이름은 편하게 지정하면된다.
Scanner in = new Scanner(System.in); //scanner 객체 생성
Scanner를 생성할 때 System.in이 들어간다.
사용자로부터 입력을 받기 위한 입력 스트림이다.
스트림이란?
자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룹니다.
스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미합니다.
즉, 스트림은 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 합니다.
그렇기에 Scanner뿐 아니라 다른 입력 방식들도 사용자로부터 입력을 받기 위해서는 System.in이 들어간다.
- method를 이용하여 입력
자바에서 Scanner의 입력 method의 종류
in.nextByte() // byte 형 입력 및 리턴
in.nextShort() // short 형 입력 및 리턴
in.nextInt() // int 형 입력 및 리턴
in.nextLong() // long 형 입력 및 리턴
in.nextFloat() // float 형 입력 및 리턴
in.nextDouble() // double 형 입력 및 리턴
in.nextBoolean() // boolean 형 입력 및 리턴
in.next() // String 형 입력 및 리턴 (공백을 기준으로 한 단어를 읽음)
in.nextLine() // String 형 입력 및 리턴 (개행을 기준으로 한 줄을 읽음)
import java.util.Scanner; // Scanner 클래스 호출
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in); // Scanner 객체 생성
byte a = in.nextByte(); // byte 형 입력 및 리턴
short b = in.nextShort(); // short 형 입력 및 리턴
int c = in.nextInt(); // int 형 입력 및 리턴
long d = in.nextLong(); // long 형 입력 및 리턴
float e = in.nextFloat(); // float 형 입력 및 리턴
double f = in.nextDouble(); // double 형 입력 및 리턴
boolean g = in.nextBoolean(); // boolean 형 입력 및 리턴
String h = in.next(); // String 형 입력 및 리턴 (공백을 기준으로 한 단어를 읽음)
String i = in.nextLine(); // String 형 입력 및 리턴 (개행을 기준으로 한 줄을 읽음)
}
}
외울 것이 많아 보이지만 기본적으로 String 입력만 제외하면 규칙이 있다.
next + Type() 의 조합으로 쓰면 된다.
가장 자주 사용할 것
nextInt()
nextDouble()
next()
nextLine()
(참고로 char 형(문자)타입으로 받는 method는 따로 없다. String으로 받은 뒤, charAt() method로 문자로 반환해야한다.)
- next() 와 nextLine() 의 차이
문자열을 입력받을 때 가장 주의해야 할 method다.
일단 next() 는 '한 단어' 그러니까 공백을 기준으로 문장 한 개만 읽어 들인다.
nextLine() 은 위와 반대로 '한 줄' 즉, 한 줄에 입력된 여러 문장들을 읽는다.
반면 nextLine()은 다르다.
Line 이라는 말 그대로 한 줄을 읽는다. 즉 한 줄 안에 공백 유무와 상관없이 개행(줄 바꿈)까지 읽는다는 것이다.
출처 블로그 : https://st-lab.tistory.com/92
'Java > Java' 카테고리의 다른 글
[Java]toCharArray[]란 ? (0) | 2022.11.08 |
---|---|
[Java]산술 연산자(+,-,*,/,%) (0) | 2022.11.08 |
[Java]증감 연산자(++, --) (0) | 2022.11.08 |
[Java]형식 문자열 (0) | 2022.11.07 |
[Java]이스케이프 문자 (0) | 2022.11.07 |
댓글