자바의 출력
System.out.println(), System.out.print()
- 출력할 데이터를 한 개만 전달 가능하다.
- 전달할 수 있는 데이터타입에 제한이 거의 없다.
- 숫자는 십진수만 출력한다. 실수를 출력할 시에는 일정한 위치에서 자른다. printf는 이와 같은 단점을 보완한다.
System.out.printf()
일반문자 및 포맷문자를 작성할 수 있다.
포맷문자의 형식은 % + 정해진 문자 이다.
%d
// 십진수 출력.%,d
는 숫자의 천단위마다 콤마를 찍어준다.%s
// 문자열 출력.%10s
는 10자리 문자열을 만든다. 입력한 문자열이 10자리보다 짧을 경우 블랭크로 채운다. 기본적으로 우정렬이고 좌정렬하고 싶으면%-10s
라고 쓰면 된다.%c
// 문자 출력%f
// 소수점 출력. %.3f => 소수점 이하 3번째자리까지 출력.
자바 입력 클래스
Scanner
import java.util.Scanner; // import해오지 않으면 에러가 난다. public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int a, b; a = sc.nextInt(); b = sc.nextInt(); System.out.println(a + b); } }
BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().split(" "); // s[0] = "1"; Integer.parseInt(s[0]) => 1
StringTokenizer
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); st.nextToken();
EOF(End of File)
주어지는 입력을 그대로 출력하기
Scanner
Scanner sc = new Scanner(System.in); while(sc.hasNextLine()) { System.out.printlin(sc.nextLine()); } while(sc.hasNextInt()) { System.out.println(sc.nextInt()); }
BufferedReader
BufferdReader br = new BufferedReader(new InputStreamReader(System.in)); String input = ""; while((input = br.readLine()) != null) { // String input에 대입하는 것은 입력받은 줄을 읽겠다는 의미. // ... }
위 코드를 실행시키려고 했을 때 예외처리에 대한 오류가 떠서 예외처리를 위한 코드를 넣었다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String args[]){ try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { String input = ""; while((input = br.readLine()) != null) { System.out.println(input); } } catch(IOException e) { System.err.format("IOException: %s%n", e); } } }
+) 문제 추가
3 // 첫번째줄 인풋은 주어질 숫자의 개수 123 // 두번째줄 인풋은 숫자들 -> 이 숫자들을 전부 더한 수를 출력하시오
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) { try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { String n = br.readLine(); String[] s = br.readLine().split(""); int sum = 0; for(int i = 0 ; i < s.length ; i++ ) { sum += Integer.parseInt(s[i]); } System.out.println(sum); } catch(IOException e) { System.err.format("IOException: %s%n", e); } } }
+) StringTokenizer는 문자열을 입력하는 것이 아니라 가공하는 역할을 하기 때문에 EOF 처리에는 맞지 않는다고 한다.