본문 바로가기
CODE - TEST

BufferedReader, InputStreamReader

by 정공자씨 2024. 1. 2.

 

Buffer
  • 어떤 데이터가 전송 될 때, 일시적으로 저장되는 메모리 영역

 

BufferedReader 란?
  • Scanner와 달리 BufferedReader는 개행 문자(/n)만 경계로 인식
  • 입력받은 데이터는 String으로 고정
  • 모든 입력을 Char형으로, 버퍼를 사용하여 받음
  • 전체 입력(혹은 버퍼 단위)에 대해서만 전달되기 때문에 속도 부분에서 매우 유리(Scanner보다 속도가 빠름)

 

BufferedReader 사용법

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언

    String strRead = br.readLine();
}
  • 입력 시, readLine( ); 메소드를 사용
  • String으로 리턴 값이 고정되어 있음. 따라서 다른 타입으로 입력을 받고자 한다면 반드시 형변환이 필요
  • 예외처리를 반드시 필요
    • readLine()시 마다 try/catch문으로 감싸서 사용하거나
    • throws IOException 을 통한 예외처리

 

 


사용 예시

 

String
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine(); // 한 줄을 읽어서(readLine) String타입으로 저장

System.out.println(line);

 

  • 한 줄(readLine, 개행하기 전까지)을 읽어서 String타입으로 값을 저장함
  • 입력 : 쑥쑥크는 포로리의 개발 일기 →  출력 : 쑥쑥크는 포로리의 개발 일기

 

 

String [  ]  배열

 

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] arr = reader.readLine().split(" "); // 한 줄을 읽어서 띄어쓰기(" ")를 기준으로 배열에 저장

for (String str : arr) {
    System.out.println(str);
}

 

  • 한 줄(readLine)을 읽어서 띄어쓰기(" ")를 기준으로 배열(String [ ] arr)에 저장
  • 쑥쑥크는 포로리의 개발 일기 → [ " 쑥쑥크는",  "포로리의",  "개발" , "일기" ]

 

 

int
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine()); // String -> int 형 변환

System.out.println(num);
  • 한 줄(readLine)을 읽어 본래의 string 타입을 int 타입으로 형 변환하여 저장
  • 한 줄에 숫자가 1개만 있을 때 사용할 수 있음

 

int [ ] 배열
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int [] arr = new int [5];

for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(br.readLine());
}

System.out.println(Arrays.toString(arr));

  • 한 줄을 읽어 입력된 값(원래 String 타입)을 int로 변환하여, int 배열에 저장

 

 

 

 

 

배열 정렬하기(Arrays.sort) , 출력하기(Arrays.toString)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int [] arr = new int [5];

for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(br.readLine());
}

Arrays.sort(arr); // 배열을 오름차순 정렬
System.out.println(Arrays.toString(arr)); // 배열 출력

  • 배열 정렬하기  Arrays.sort ( )
  • 배열 출력하기  Arrays.toString(  )

 

 

 

 

 

 

 

 

참고

 

https://codingjerk-diary.tistory.com/entry/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC-Systemin-InputStreamReader-BufferedReader-%EC%A0%95%EB%A6%AC