STUDY/cote
출력의 방식
이앤지
2023. 5. 9. 12:31
Scanner
1.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.print("a = "+a+"\nb = "+b); //가독성
System.out.println(String.format("a = %d", a));
System.out.println(String.format("b = %d", b));
System.out.println("a = " + Integer.toString(a));
System.out.println("b = " + Integer.toString(b));
}
}
BufferedReader
Scanner와 유사.
Bufferedwriter
System.out.println()과 유사
특징
- 둘은 기존에 쓰던 scanner와 System.out.println()보다 속도 측면에서 훨씬 빠르다.
- 입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성이 높다.
- 많은 양의 데이터를 처리할 때 유리하다.
단점
하지만 그에 비해 BufferdReader은 Enter만 경계로 인식하고, 받은 데이터가 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업이 필요한 경우가 많다.
import
사용법에 앞서 이 둘을 사용하려면 다음의 import가 추가적으로 필요하다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
사용법
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int
위와 같이 선언하여 사용하면된다.
입력은 readLine()을 활용하는데, 주의해야할 점 2가지가 있다.
- readLine()의 리턴값은 String이기 때문에 다른타입으로 입력을 받을려면 형변환을 꼭 해야한다.
- 예외처리를 꼭 해야한다. readLine을 할때마다 try & catch를 활용하여 예외처리를 해도되지만, 대개 throws IOException을 통하여 작업한다.
throw 이용 시
(1) 클래스를 import해주어야 한다.
import java.io.IOException;
(2) main 클래스 옆에 throws IOException를 작성한다.
public static void main(String[] args) throws IOException {}
Read한 데이터를 공백 단위로 나누기
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
Read한 데이터는 Line단위로만 나눠지기에 공백단위로 데이터를 가공하려면 따로 작업을 해주어야하는데, 위의 두가지 방법이 대표적이다.
- StringTokenizer에 nextToken()함수를 쓰면 readLine()을 통해 입력받은 값을 공백단위로 구분하여 순서대로 호출할 수 있다.
- String.split()함수를 활용하여 배열에 공백단위로 끊어서 데이터를 넣고 사용하는 방식이다.
BufferedWriter 사용법
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "abcdefg"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
bw.flush(); //남아있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
BufferedWriter 의 경우 버퍼를 잡아 놓았기 때문에 반드시 flush() / close() 를 반드시 호출해 주어 뒤처리를 해주어야 한다.
그리고 bw.write에는 System.out.println()과 같이 자동개행기능이 없기때문에, 개행을 해주어야할 경우에는 \n를 통해 따로 처리해주어야 한다.
https://velog.io/@chosj1526/Java-BufferedReader-와-BufferedWriter-사용법-StringTokenizer
2.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
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());
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
3.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class print_a_b_int {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String str = bf.readLine();
String[] t = str.split(" ");
int a = Integer.valueOf(t[0]);
int b =Integer.valueOf(t[1]);
System.out.println("a = " + a);
System.out.println("b = "+ b);
}
}
//----------------------------------------------------------------------------------------
import java.util.Scanner;
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
System.out.printf("a = %S\nb = %S", str[0], str[1]);
}
}
4.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] params = br.readLine().split(" ");
bw.write("a = " + params[0] + "\n");
bw.write("b = " + params[1]);
bw.flush();
bw.close();
br.close();
}
}