import java.io.*;
import java.util.*;
Scanner scan = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = scan.next(); // 공백 전까지 입력 받음
input = scan.nextLine(); // Enter 치기 전까지 입력 받음
input = br.readLine(); //
String[] input1 = br.readLine().split(" ");
int i = br.read(); // 공백 전까지 숫자 입력 받음
br.close(); // 입력 스트림 아예 닫힘
Scanner이나 System.in.read를 사용하는 것이 일반적이나, 코딩테스트용으로 빠르게 입력받기 위해서는 BufferedReader을 사용합니다.
//1. 띄어쓰기 기준으로 문자열을 분리
StringTokenizer st1 = new StringTokenizer(br.readLine());
//2. 구분자를 기준으로 문자열을 분리
StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
/* 3. 구분자를 기준으로 문자열을 분리할 때 구분자도 토큰으로 넣는다. (true)
* 구분자를 분리된 문자열 토큰에 포함 시키지 않는다. (false)
* (디폴트 : false)
*/
StringTokenizer st3 = new StringTokenizer(br.readLine() , " " , false);
StringTokenizer 클래스는 문자열을 구분자를 이용하여 분리할 때 사용할 수 있습니다.
만일 BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들일 수 밖에 없습니다.
꼭 BufferedReader 클래스만이 아니더라도, 스페이스 기준으로 혹은 컴마로 혹은 공백을 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용합니다.
간단하게
String : 문자열을
Tokenizer : 토큰화한다.
이렇게 해석할 수 있습니다.
즉, 토큰은 분리된 문자열 조각으로, StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스입니다.
StringTokenizer은 공백이 있는 경우 문자열이 공백처리를 땡겨 채우도록 하여 BufferedReader보다 더 빠르다고 합니다.
BufferedReader, InputStreamReader은 java.io에 속하고 StringTokenizer은 java.util에 속합니다.
StringTokenizer st4 = new StringTokenizer(br.readLine());
int count = st4.countTokens();
while (st4.hasMoreTokens()){
System.out.println(st4.nextToken());
}
hasMoreTokens(), 남아있는 토큰이 있다면 true, 없다면 false를 리턴합니다.
nextToken(), 객체에서 다음 토큰을 반환합니다.
nextToken(String delim), delim 기준으로 다음 토큰을 반환합니다.
hasMoreElements(), hasMoreTokens와 동일한데 엘리먼트보다 토큰으로 된 메서드를 주로 사용합니다.
nextElements(), nextToken 메서드와 동일하지만 문자열이 아닌 객체를 리턴합니다.
countTokens(), 총 토큰의 개수를 리턴합니다.
String str = "블로그 >개발 블로그 :velog.io/@brokenfinger/posts";
StringTokenizer st5 = new StringTokenizer(str, ">:" );
while (st5.hasMoreTokens()) {
System.out.println(st5.nextToken());
}
/*
블로그
개발 블로그
velog.io/@brokenfinger/posts
*/
"블로그 >개발 블로그 :velog.io/@brokenfinger/posts" 의 문자열이 있을 때,
1. 블로그
2. 개발 블로그
3. velog.io/@brokenfinger/posts
총 3개의 토근이 생성됩니다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "adc"; // 출력 문자열
bw.write(str);
bw.newLine(); // 줄바꿈
bw.flush(); // 남은 데이터 모두 출력
bw.close(); // 출력 스트림 아예 닫힘
StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b").append("\n");
System.out.println(sb);
System.out.println()이 일반적인 방법이나, StringBuilder을 활용해서 출력을 할 수도 있고 BufferedWriter을 활용해서 출력을 할 수도 있습니다.
import java.io.*;
import java.util.*;
public class Solution {
static int[][] arr = new int[301][301];
public static void main(String[] args) throws IOException{
/* 입력 예시
3 3
1 2 3
4 5 6
7 8 9
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk = new StringTokenizer(br.readLine()," ");
int n = Integer.parseInt(stk.nextToken());
int m = Integer.parseInt(stk.nextToken());
for(int i=0; i<n; i++){
stk = new StringTokenizer(br.readLine(), " ");
for(int j=0; j<m; j++){
arr[i][j] = Integer.parseInt(stk.nextToken());
}
}
/* 출력 예시
3 3
1 2 3
4 5 6
7 8 9
*/
StringBuilder sb = new StringBuilder();
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
sb.append(arr[i][j]);
sb.append(" ");
}
sb.append('\n');
}
System.out.println(sb);
}
}
//2
BufferedReader br = new BufferedReader(new InputStreamReadr(System.in));
String [] input = br.readLine().split(" ");
n = Integer.parseInt(input[0]);
m = Integer.parseInt(input[1]);
for(int i=0; i<n; i++){
String input2 = br.readLine().split(" ");
for(int j=0; j<m; j++){
arr[i][j]=Integer.parseInt(input2[j]);
}
}
//3
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
sc.nextLine();
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
arr[i][j] = sc.nextInt();
}
}
import java.io.*;
import java.util.*;
public class Solution {
static int[][] arr = new int[301][301];
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
for(int i=0; i<n; i++){
String str = br.readLine();
for(int j=0; j<m; j++){
arr[i][j] = str.charAt(j) - '0';
}
}
StringBuilder sb = new StringBuilder();
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
sb.append(arr[i][j]);
}
sb.append('\n');
}
System.out.println(sb);
}
}