JAVA의 입 출력
- 입력과 출력으로 JAVA는 성능이 좌우되는 코테가 존재
- 빠른 입출력 방법과, 일반적인 입출력 방법을 알아보자
입력
Scanner
- 일반적인 간단한 입력으로 사용한다.
- 예외처리 없어도 되며,
nextline
을 혼용하면 잘못 입력될 여지가 있다. -
String과 int로 받는게 가능하다.
- 사용법
import java.util.Scanner; //import
Scanner sc = new Scanner(System.in); //객체 생성
//공백, \t, \n을 기준으로 가져온다.
String a = sc.next()
Int a = sc.nextInt()
//한줄 \n을 기준으로 가져온다.
String line = sc.nextLine()
BufferedReader
- N과M문제
- 링크
- 많은 양을 출력하는데 일반적인system.out.println으로는 느려서 시간초과를 발생한다.
- 이외에도 많은 입력(10000줄을 넘기거나, 10000개의 공백단위로 입력을 받거나)할때에도 시간초과가 난다면 buffered를 사용해야 한다.
-
백준과 같은 형태(입출력을 직접구현)의 코딩테스트는 이 방식이 낫다고 하다.
- 입력 사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
로 받을 준비를 합니다.br.readLine()
으로 한줄씩 입력을 받습니다. 받는것은 String타입- 공백단위로 값을 잘라서 가져오기
StringTokenizer st = new StringTokenizer(br.readLine());
로 공백단위로 자릅니다.- 값을 가져오는것은
st.nextToken()
을 통해 자른것을 조회할 수 있습니다.
- 출력 사용법
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(answer+"\n");
- 출력할 내용을 적는다.
- 개행이 따로 없기 때문에 \n과 같이 직접 적어줘야 한다.
bw.flush();
- 위 명령으로 한번에 출력한다.
//import 되야하는것
//입력
import java.io.BufferedReader;
import java.io.InputStreamReader;
//출력
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;// 에러 처리
import java.util.StringTokenizer;
//입력들을 BufferedReader로 받습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int N1 = Integer.parseInt(st.nextToken());
int N2 = Integer.parseInt(st.nextToken());
//출력 준비
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("이거 출력이요\n");
bw.flush();
출력(StringBuilder)
- 바로 출력하지 않고 값을 받아서 출력하는
stringbuilder
bufferedWriter
와 사용법은 유사하다.- 따로 import하지 않아도 사용이 가능하다.
- 선언
StringBuilder sb = new StringBuilder();
- 출력 내용 붙이기
sb.append("출력이요");
- 출력
- stringbuilder를 출력하면 된다.
System.out.println(sb)
- 사용법
StringBuilder sb = new StringBuilder();
//출력할 내용을 이어붙인다.
sb.append("문자열 ");
//출력
System.out.println(sb);