자바 공부 21 : 콘솔 입출력

친환경 개발자
|2024. 2. 13. 23:43

콘솔이란?

사용자의 입력을 받거나 사용자에게 문자열을 출력해주는 역할을 하는

컴퓨터와 사용자 사이의 상호작용을 담당하는 장치

 

 

콘솔입력

사용자가 직접 무언가를 입력하는 것.

 

"System.in" 을 사용하여 사용자로부터 입력을 받음.

 

 

 

입력 관련 임포트 내장 클래스

  • InputStreambyte 단위의 데이터를 읽음, 길이 고정
  • InputStreamReader : byte값들을 문자로 변환시켜 문자(char) 단위로 읽음, 길이 고정
  • BufferedReader : 길이에 상관없이 입력값을 모두 받아들임 >> 즉, 문자열(string)을 읽음
  • Scanner : 입력값이나 파일 등 다양한 소스에서 입력정보를 읽음.

 

 

따라 작성해보기

import java.io.IOException;
import java.io.BufferedReader;   // 문자열(Strint)을 읽는다 | 입력값을 길이에 상관없이 받음
import java.io.InputStream;   // byte를 읽는다 | 입력값 받아 아스키코드로 출력
import java.io.InputStreamReader;   // 문자(character)를 읽는다 | 입력값 받아 값 그래로 출력
import java.util.Scanner;


public class Day19 {
    public static void main(String[] args) throws IOException {     // IOException 예외 처리를 뒤로 미룬다(throws)
        InputStream in = System.in;    //System.in은 InputStream의 객체

        int a;
        System.out.println("1byte만 입력");
        a = in.read();  //read() : 1byte 입력 받음 >> int로 저장 (0~255정수값, 아스키코드값)

        System.out.println(a);    // 1byte 이상 입력해도 1byte만 받아서 출력함
        System.out.println();

        int b;
        int c;  // 2개의 변수 선언하면 2byte 입력값을 받을 수 있음
        System.out.println("2byte 입력");
        b = in.read();
        c = in.read();

        System.out.println(b);
        System.out.println(c);
        System.out.println();

        byte[] d = new byte[3];
        System.out.println("3byte짜리 배열 입력");
        in.read(d);

        System.out.println(d[0]);
        System.out.println(d[1]);
        System.out.println(d[2]);
        System.out.println();

        // InputStreamReader : 입력한 값을 아스키코드가 아니라 그대로 출력할 수 있음
        InputStreamReader reader = new InputStreamReader(in); // 입력값으로 InputStream 객체인 'in' 필요

        char[] e = new char[3];
        System.out.println("3byte짜리 배열 입력 - 그대로 출력");
        reader.read(e);

        System.out.println(e);
        System.out.println();

        // BufferedReader : 길이에 상관없이 모든 입력 받음
        BufferedReader br = new BufferedReader(reader); // 입력값으로 InputStreamReader의 객체인 'reader' 필요


        String f = br.readLine();   // readLine() : 사용자가 입력한 문자열 전부를 읽음
        System.out.println("문자열 입력");
        System.out.println(f);

        // Scanner
        Scanner sc = new Scanner(System.in);
        System.out.println(sc.next());   // 한개의 토큰을 읽어 출력 (토큰 : 정보의 최소 단위)
//        System.out.println(sc.nextLine());  // 한 라인을 읽어 출력
//        System.out.println(sc.nextInt());   // 정수를 읽어 출력
    }
}