기본 개념
- Scanner : 입력을 받을 경우, 공백(space)이나 Enter를 모두 경계로 인식함
nextInt(), next(), nextchar() 등 다양한 형식의 데이터 입력가능
- BufferedReader : Enter만 경계로 인식함
String로만 데이터 인식
장점 : 알고리즘의 시간을 줄일 수 있다.
형변환을 통한 BufferedReader 사용 방법
1. 공백을 포함하지 않는 Int형
1
2
3
4
|
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = Integer.parseInt(br.readLine());
|
BufferedReader를 통한 선언 -> readLine() 메소드를 통해 String으로 입력받음
-> Integer.parseInt() 메소드를 통한 형변환
2. 공백을 포함하는 경우의 Int형
방법 1> StringTokenizer 이용 (Default값 = " ")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class Example {
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());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
System.out.println("a의 값:"+a+", b의 값 :"+b+", c의 값 :"+c);
}
}
|
출력 결과
배열에서의 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
|
String s1=br.readLine();
StringTokenizer st1=new StringTokenizer(s1);
for(int i=0;i<road.length;i++) {
road[i]=Long.parseLong(st1.nextToken());
}
String s2=br.readLine();
StringTokenizer st2=new StringTokenizer(s2);
for(int i=0;i<liter.length;i++) {
liter[i]=Long.parseLong(st2.nextToken());
}
|
입력받은 문자열을 StringTokenizer에 넣은 후, nextToken() 메소드를 통해 공백단위로 인식.
방법 2> String.split() 메소드 이용
1
2
3
4
5
6
7
8
|
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
String arr[]=s.split(" ");
int a=Integer.parseInt(arr[0]);
int b=Integer.parseInt(arr[1]);
int c=Integer.parseInt(arr[2]);
|
문자열을 split() 메소드를 통해 공백 단위의 분할 후 문자열 배열에 저장
-> 각 문자열 배열에 저장된 값을 Integer.parseInt() 메소드를 통해 정수형으로 변환
BufferedWriter 사용방법
1
2
3
4
5
6
7
8
9
10
11
|
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
for(int i=0;i<a;i++) {
for(int j=0;j<b;j++) {
for(int k=0;k<c;k++) {
bw.write(i+" "+j+" "+k+"\n");
}
}
}
bw.flush();
bw.close();
|
BufferedWriter를 통해 선언 후, System.out.println()이 아닌 bw.write()를 이용해 출력
bw.flush() -> 남아있는 데이터 모두 출력
bw.close() -> 스트림을 닫음
'언어 > Java' 카테고리의 다른 글
[Java] 순열(Permutation), 조합(Combination) (0) | 2021.12.23 |
---|---|
[Java] 자바 컬렉션들의 시간 복잡도 (Big O) (0) | 2021.11.23 |
[Java] 형 변환을 도와주는 다양한 메서드 (0) | 2021.09.08 |
[Java] 정렬 Comparable vs Comparator 사용 (0) | 2021.07.16 |
[Java] 흐름제어문 - continue, break, return (1) | 2020.12.02 |