import java.util.Scanner;
Scanner s = new Scanner(System.in);
String name;
System.out.println("당신은 누구십니까?");
name = s.next();
System.out.println("나는"+name+"이다\n");
s.close(); # s 객체를 해제해주는 작업
사용시
(1) import java.io.IOException
(2) public static void main(String[] args) throws IOException{}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
public class Main {
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 + b + c);
br.close()
}
}
BufferedReader의 경우 close() 메소드를 명시해주지 않아도 Garbage Collector에 의해 BufferedReader 및 내부의 객체들이 자동으로 정리된다. 하지만 Garbage Collector에 의해 사용되지 않는 자원이 정리되기 전에 연속/반복적으로 BufferedReader가 close 되지않고 사용되면 정상적으로 reading이 되지 않는 문제가 발생한다.
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "Hello World!"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
bw.flush(); //남아있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
}
}
입력은 readLine(); 메서드를 이용한다. 이 때 주의해야 할 점이 2가지 있다.
readLine()시 리턴값이 String으로 고정되기에 String이 아닌 다른 타입으로 입력을 받으려면 형변환을 꼭 해주어야 한다.
예외처리를 반드시 해줘야한다. readLine()을 할 때마다 try&catch를 활용하여 예외처리를 해주어도 되지만 보통 throwsIOException을 통하여 작업을 수행한다.
BufferedReader 클래스의 메서드로 입력을 읽어들이면, 라인 단위로 밖에 입력을 받아 들여야 한다. 이에 문자열을 분리하거나, 특정 문자에 따라 문자열을 구분하고 싶을 때, StringTokenizer를 이용할 수 있다.
토큰은 분리된 문자열 조각으로, StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스이다.
StringTokenizer 메서드