자바에서는 스트림을 이용해 입출력을 수행한다.
스트림은 순서 있는 자료인 바이트들의 열을 의미, 파이프 역할을 한다.
모니터나 키보드를 스트림 형태로 만들어둠
System.out은 모니터에 대한 스트림, Sytem.in은 키보드에 대한 스트림

1.표준 출력

모니터에 자료 출력하기 위해서는 System 클래스의 out 객체에 정의되어 있는 print 메소드와 println메소드 사용
    System.out.println();
    클래스/표준 출력스트림/프린트 스트림 객체의 메소트
또 +연산자를 사용해 하나 이상의 자료를 한문장으로 출력가능
    문자열형 자료와 함께 사용시 문자열 연결, 수치형 자료와 사용시 산술 연산자로 사용됨

2.표준 입력

System 클래스 in 객체의 read 메소드 사용
    System.in.read();
    클래스/표준 입력 스트림/버퍼 입력스트림 객체의 메소드
read 메소드는 하나의 문자를 읽어서 문자를 돌려주고 문자가 없으면 -1 값을 돌려준다.

3. 문자열 입력

System.in은 한개의 문자만 입력받기 때문에 문자열을 처리하기 위해서는 System.in에 버퍼를 사용해야한다.
버퍼는 물탱크의 역할로 파이프인 스트림을 통해서 가지고 온 문자열을 모으는 곳
그리고 언어처리를 하기 위해 리더(Reader)가 필요

    InputStreamReader instr = new InputStreamReader(System.in);
    입력스트림리더클래스/변수 선언      /매개변수로 표준입력스트림 객체 전달

    BufferedReader inbr = new BufferedReader(instr);
    버퍼리더 클래스
    : BufferedReader 클래스 사용하면 행(줄) 단위로 자료를 읽어들임
      Buffered Reader 클래스의 버퍼 변수 inbr은 Reader 클래스의 리더 변수 instr을 인수로 가진다.
      즉 바이트 스트림을 문자 스트림으로 변환하는 것

    BufferedReader inbr = new BufferedReader(new InputStreamReader(System.in));

readline() 메소드는 읽어 들인 한 행의 자료를 String 클래스의 문자열로 반환한다. 읽을 자료 없을 시 null 반환
    String Name = inbr.readline();

키보드 입력 KO[엔터] -> Reader(instr) -> Buffered Reader(inbr)-readline() -> “KO”

메소드설명
reader.readLine()문자열을 입력받는 메소드
Integer.parseInt(reader.readLine())문자열을 입력받은 후 정수로 변환하는 메소드
Double.parseDouble(reader.readLine())문자열을 입력받은 후 실수로 변환하는 메소드

4. Scanner

Scanner 클래스는 java.util 패키지에 묶여서 제공되는 클래스
Scanner 클래스는 형식이 있는 입력을 토큰으로 쪼개고 각각의 토큰을 자료형에 따라 변환하여, 다양한 생성자를 제공한다.
또한 공백문자를 이용해 각각의 토큰을 분리한다.
즉 단지 키보드 입력만을 위해 디자인된 클래스가 아니라는 것

    Scanner sc = new Scanner(System.in);
    :콘솔 입력인 표준 입력에서 사용하는 것이 기본이지만 File, Input Stream, Readable, Path와 같은 다양한 입력 소스 지정 가능
    :아래 Scanner가 제공하는 메소드들

메소드
설명
void close()
스캐너를 닫는다
boolean hasNext()
입력으로 다음 토큰이 있으면 true반환
String next()
다음 토큰을 문자열 타입으로 반환
String nextLine()
한 행 전체(\n 포함)를 문자열 타입으로 반환
Xxx nextXxx()
Xxx 입력의 다음 토큰을 Xxx 타입으로 반환(Xxx는 Byte, Short, Int, Long, Float, Double이 있다.)


'Programming > Java' 카테고리의 다른 글

Java_향상된 for문  (1) 2018.01.30
Java_배열(Array)  (0) 2018.01.29
Java_break와 continue  (0) 2018.01.28
Java_자바 언어 소개  (0) 2018.01.28

+ Recent posts