SW아카데미 (23)/JAVA
[Java 입출력] BufferedReader, BufferedWriter, StringTokenizer
튼튼한장
2023. 7. 25. 17:52
목차 💎
1. 기본적인 입출력
2. BufferedReader(), BufferedWriter()
3. StringTokenizer()
4. 사용 예시 코드
더보기
입출력 학습 이유!
원래 가장 기본적인 입출력 방법인 scanner (아래 코드 참고)와 System.out.println() 방법을 사용하였는데
코딩테스트 문제 풀이를 통하여 학습하던 도중 풀이 방법에 BufferedReader()와 Writer()를 사용된 것을 확인하고 컴퓨터프로그래밍 2 수업 때 배웠던 내용들을 복습하고자 입출력을 학습하게 되었다.
StringTokenizer()도 마찬가지로 학습해두면 유용하게 쓸 것 같아서 내용을 정리해 놓으려고 한다.
💎 1. 기본적인 입출력
import java.util.*;
public class IOput{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); // 입력받을 수 있도록 스캐너 작성
String S = sc.nextLine(); // 스캐너를 사용하여 입력받기
System.out.println(S); // print()를 사용하여 입력받은 값 출력하기
}
}
// Input: Hello
// Output: Hello
이전까지 코딩테스트에는 기본적인 입출력인 Scanner와 System.out.println();을 사용하였다.
💎 2. BufferedReader(), BufferedWriter()
⚠️ 주의 ⚠️
BufferedReader()를 사용하려면 꼭 지켜야할 점!
1. 모든 데이터를 String으로 입력받는다.
2. Enter를 기준으로 한 줄씩 데이터를 입력받는다.
3. import를 하고 사용해야한다.
4. main 클래스 옆에 => throws IOException을 작성하여 예외처리를 해주어야한다.
BufferedReader()
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Buffer {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine(); // 기본 입력 형식
int T = Integer.parseInt(br.readLine()); // String => int로 입력받기
}
}
// Input: 안녕 지금은 24.09.02
// Output: 안녕 지금은 24.09.02
⚠️ 주의 ⚠️
BufferedWriter()를 사용하려면 꼭 지켜야할 점!
1. flush()와 close()를 사용하여 각각 남아있는 데이터를 모두 출력하고, 스트림을 닫아주어야 한다.
2. System.out.println();과는 달리 자동으로 줄바꿈이 되는 것이 아니기 때문에 "\n"을 수동으로 작성해주어야 한다.
3. import를 하고 사용해야한다.
BufferedWriter()
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Buffer {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String S = br.readLine(); // 값 입력받기
bw.write(S + "\n"); // 수동으로 줄바꿈 해주기
bw.flush(); // 남아 있는 데이터 모두 출력
bw.close(); // 스트림 닫기
}
}
💎 3. StringTokenizer()
StringTokenizer()를 사용하여 한 줄에 한 번에 입력받은 값들을 띄어쓰기 간격 또는 원하는 기준으로 값을 나누어 받을 수 있다.
예를들어 값을 저장하는데는 두가지 방법이 있다.
- 배열에 원하는 기준으로 값을 순서대로 저장하기
- nextToken()을 사용하여 하나씩 저장하기
각각의 상황에 맞게 편하거나 원하는 방법을 사용하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Buffer {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine(); // 값 입력받기
StringTokenizer st = new StringTokenizer(S); // tokenizer에 잘라서 입력받기
String[] sArr = S.split(" "); // 1. 띄어쓰기 간격대로 배열에 저장하기
System.out.println(st.nextToken()); // 2. 입력받은 토큰 하나씩 출력하기
}
}
💎 4. 사용 예시 코드
import java.io.*;
import java.util.StringTokenizer;
public class number {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int count = st.countTokens();
int x = 0;
while(st.hasMoreTokens()){
x += Integer.parseInt(st.nextToken());
}
bw.write(String.valueOf(x));
bw.flush();
bw.close();
}
}
// Input: 1 2 3
// Output: 6
더보기
느낀점 🔥
어떤 내용이든지 사용 방법과 사용 예시를 함께 공부해야지 이해도 잘 되고 잘 활용할 수 있을 것 같다는 생각이 들었다. 이번에 BufferedReader(), BufferedWriter(), StringTokenizer()에 대하여 학습하였으니, 다음 코딩테스트부터 위의 입출력 방법들을 활용하여 문제를 풀어야겠다.