Scanner and BufferedReader
콘솔창에서 문자를 입력받을 수 있는 두 입력 함수 Scanner 와 BufferedReader 를 사용할 수 있다.
내용이 짧고 whitespace 가 없는 경우 Scanner 를 사용하여 입력받을 수 있지만, 내용이 길어지고 whitespace 가 있는 경우에는 Scanner 를 사용하게 되면 첫 어절만 입력받게 되고 whitespace 이후의 데이터는 소실된다.
이를 해결하기 위해 BufferedReader 를 사용할 수 있다. BufferedReader 은 whitespace 가 포함된 더 긴 문장을 입력받을 수 있지만 Scanner 와 달리 문자열 String 밖에 읽지를 못한다. 반면 Scanner 은 수와 관련된 int, short, long, float 그리고 double 을 읽을 수 있다.
Scanner 를 사용하기 위해서는 java.util.Scanner 를 import 해야 한다.
BufferedReader 을 사용하기 위해서는 java.io.BufferedReader 를 import 해야 한다.
BufferedReader 에는 InputStreamReader 가 입력되어야 하고, InputStreamReader 을 사용하기 위해서는 java.io.InputStreamReader 가 import 되어야 한다.
BufferedReader 에서 라인단위의 데이터를 입력받기 위해 readLine() 함수를 사용해야 하며, 이때 main() 함수에 throws Exception 처리를 해주어야 한다.
코드 보기
아래는 간단히 작성된 사용 예와 그 출력이다.
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MainClass {
public static void main(String[] args) throws Exception {
// Scanner
Scanner sc = new Scanner(System.in);
String word_1 = sc.next();
String sentence_1 = sc.next();
System.out.println(word_1);
System.out.println(sentence_1);
// input: success
// input: Opportunities don’t happen. You create them.
// output: success
// output: Opportunities
// BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String word_2 = br.readLine();
String sentence_2 = br.readLine();
System.out.println(word_2);
System.out.println(sentence_2);
// input: conduct
// input: I’ve failed over and over and over again in my life and that is why I succeed.
// output: conduct
// output: I’ve failed over and over and over again in my life and that is why I succeed.
}
}
'알아가기 > Java' 카테고리의 다른 글
[Java] ArrayList 모든 원소 출력하기 (0) | 2022.12.31 |
---|---|
[Java] 파일 상대경로 설정 (Relative Path on Mac) (0) | 2022.12.27 |
[Java] 잘못된 입력에 대해 exception 으로 재입력 유도 (0) | 2022.12.26 |
[Java] array 값 정렬하기 w/o Arrays.sort() (0) | 2022.12.24 |
[Java] for-each 사용 (0) | 2022.12.23 |