알아가기/Java

[Java] Scanner 와 BufferedReader 사용

XEV 2022. 12. 21. 23:55

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.
		
}

}