카테고리 없음

[Java] 입력 받기

chaereemee 2024. 3. 15. 00:50

김재성(대학교 5학년)이 스캐너말고 버퍼리더로 입력받는 연습을 하라고 시켜서(?)

버퍼리더로 이제 백준 풀거다.

 

자바에서 사용자에게 입력을 받는 방법은 두 가지가 있다.

[1] Scanner
[2] BufferedReader

 

Scanner

(설명 생략)

사용법

// 패키지 
import java.util.Scanner;                      

public class Input {
	public static void main(String[] args) {
    	// scanner 선언
    	Scanner sc = new Scanner(System.in);    
        
        // scanner로 입력 받기
        String str1 = sc.nextLine();       // String 읽음 (띄어쓰기 포함)
        String str2 = sc.next();           // String 읽음 (띄어쓰기 뒷부분 읽지 않음)
        
        int intNum = sc.nextInt();         // int 읽음
        float floatNum = sc.nextFloat();   // float 읽음
        double doubleNum = sc.nextDouble();// double 읽음
        
        boolean bool = sc.nextBoolean();   // boolean 읽음
        
        // 결과 출력
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(intNum);
        System.out.println(floatNum);
        System.out.println(doubleNum);
        System.out.println(bool);
        
        // scanner 닫기
        sc.close();
	}
}

 

 

BufferedReader

BufferedReader는 InputStreamReader에 버퍼링 기능이 추가된 Class이다.

inputStreamReader
: 문자열을 Character 단위(한 글자 단위)로 읽어 들인다. 
Buffer
: 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 해당 데이터를 보관하는 임시 메모리 영역이다.

 

버퍼에 보관한 후, 사용자의 요청이 있을 때 버퍼에서 데이터를 읽어오는 방식으로 속도가 빠르다는 장점이있다.

입력을 라인 단위로 받기 때문에, 공백도 string으로 인식하며, 다른 타입의 데이터라면 형변환이 필요하다.

 

BufferedWriter

버퍼를 정의해줬기 때문에 반드시 flush()/close()로 호출해 뒤처리를 해줘야한다.

자동 개행 기능이 없기 때문에 개행이 필요한 경우 \n을 통해 따로 처리해줘야한다.

메소드

 

사용법

StringTokenizer 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Input {
 
	public static void main(String[] args) throws IOException {
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
 
		int N = Integer.parseInt(br.readLine());
        
		StringTokenizer st;
 
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine()," ");
			bw.write((Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()))+ "\n");
		}
		br.close();
        
		bw.flush();
		bw.close();
 
	}
}