김재성(대학교 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();
}
}