반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

[JAVA] 입출력 _ Scanner,BufferedReader, StringTokenizer

자바의 입출력 Scanner BufferedReader StringTokenizer  문자열로 활용하기 위해 사용 (문자열에 최적화) Scanner 보다 빠르다 1. Scanner 입력 형태 1 2 3 4 5 6 7 //Scanner를 사용했을시 입력 형태. Scann..

eonhwa-theme.tistory.com

 

(Java)Scanner vs BufferedReader

오늘은 Scanner과 BufferedReader에 대해서 작성하려고 합니다. 사용자로부터 콘솔에 어떤 값을 입력 받은 후 출력하는 대표적인 클래스들 입니다. 하지만 이 두개가 다르다는 것을 알고 계셨나요? 알

yeon-kr.tistory.com

 

[Java/독학] 자바 System.out - print(출력)함수와 스캐너(입력) 파트 1

안녕하세요? 휴몬랩입니다. 우리 다 같이 2주 안에 JAVA 프로그래밍 언어 기초 개념을 마스터해볼까요?...

blog.naver.com

원래 C++로 코딩테스트를 준비했었는데, 이번에 코딩테스트에 떨어지기도 하고, C++을 허용 안하는 기업도 있어서 Java로 언어를 바꾸려고 한다.

그래서 Java 관련 내용들을 정리하려고 하는데, 그 첫 번째 게시물 입출력이다.

이 게시물에서 정리하는 내용은 Java 입출력의 전부가 아니라 내가 아는 입출력들을 정리한 것이다!

 

1. 입력

1-1. Scanner 

스캐너 객체를 이용한 입력 방법으로 스캐너 객체는 여러개를 생성할 수 있지만, 일반적으로 하나만 생성한다.

1
2
3
4
5
6
Scanner sc = new Scanner(System.in);
 
int n = sc.nextInt(); 
long l = sc.nextLong();
String str = sc.next(); 
String str2 = sc.nextLine(); 
cs

 

1-2. BufferedReader

BufferedReader도 마찬가지로 일반적으로 하나의 객체만 생성한다.

1
2
3
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
String str = br.readLine();
cs

BufferedReader의 경우 줄단위로 입력을 받기 때문에 한줄에 여러개의 데이터를 받을 경우 데이터를 잘라서 활용해야 한다.

데이터를 자르는 방법으로는

1. String.split() 메서드를 활용하는 방법

1
2
3
4
5
6
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
 
for(int i=0; i<str.length; i++){
    System.out.println(Integer.parseInt(str[i]));
}
cs

2. StringTokenizer를 사용하는 방법

1
2
3
4
5
6
7
8
9
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
 
// str1 str2 str3 str4 입력
 
st.nextToken() // str1 
st.nextToken() // str2
st.nextToken() // str3
st.nextToken() // str4
cs

StringTokenizer가 String의 split메서드가 좀더 빠르다고 한다.

StringTokenizer에 대해서는 String을 정리할때 정리할 것이다.

 

스캐너는 정규 표현식을 사용해서 파싱을 하기 때문에, BufferedReader가 입력 속도가 빠르다.

 

2. 출력

2-1. 시스템 출력

Java의 시스템 출력에는 크게 아래 3가지가 있다.

(1) System.out.print() -> 값을 그대로 출력함

(2) System.out.printf() -> C언어의 printf()와 동일, 지시자 사용

(3) System.out.println() -> System.out.print()에서 "\n"이 추가됨. 자동 줄바꿈

 

2-2. BufferedWriter

1
2
3
4
5
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
bw.write("Hello World!");
bw.flush();
bw.close();
cs

 

BufferedWriter에서 write() 메서드는 BufferedWriter에 문자열을 저장하는 기능이다.

다른 블로그에서 write()를 출력 메서드라고 소개하는 글들이 많았는데, 저것만 쓰면 출력 안된다....

flush() 메서드를 써줘야 저장되어있는 문자열들을 출력하고, 다 사용하고나서 메모리 낭비를 막기위해 close()해준다.

반응형

'Legacy' 카테고리의 다른 글

[Java#3] Array, ArrayList, Arrays  (0) 2022.05.02
[Java#2] String, StringBuilder  (0) 2022.04.29
[C++#5-5] map  (2) 2022.04.18
[C++#5-4] set  (0) 2022.04.18
[C++#5-3] queue  (0) 2022.04.18

+ Recent posts