BufferedReader와 BufferedWriter는 버퍼를 이용해서 입출력 효율을 높여준다.
Scanner보다 성능이 더 좋다.
사용예시
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[]args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");//공백을 기준으로 구분함. " "는 생략해도 기본으로 공백 기준으로 됨
int a = Integer.parseInt(st.nextToken());//예제대로 입력시 1
int b = Integer.parseInt(st.nextToken());//예제대로 입력시 3
double sum = (double)a/(double)b;
System.out.println(sum);
}
}
StringTokenizer
긴 문자열을 지정된 구분자를 기준으로 문자열을 자를 때 사용함
BufferedWriter
일반적인 출력은 System.out.println("");방식인데
BufferedWriter를 사용하면 일반적 방식보다 성능이 개선된다.
사용예시
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[]args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//System.out.println 대체하려고 씀
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
int arr[] = new int[n];
StringTokenizer st2 = new StringTokenizer(br.readLine());//StringTokenizer는 재사용이 불가해서 위에서 선언했어도 또 쓰려면 또 선언해야함
for(int i=0;i<arr.length;i++){
arr[i] = Integer.parseInt(st2.nextToken());
if(arr[i]<x){
bw.write(arr[i]+" ");
}
}
bw.flush();//남아있는 데이터를 모두 출력시키기 위해 호출해 닫아줌
br.close();
}
}
flush()로 남아있는 데이터를 모두 출력함
개행을 해야 할 때는 br.wirte(arr[i]+"\n");
출처 BufferedReader / BufferedWriter / StringTokenizer: https://dblee.tistory.com/167