TIL/Java

[Java] System.in.read() / System.in.skip() / System.in.available()

야리니 2022. 2. 27. 20:57
728x90
반응형

1. System.in.read()

- 기능 : 입력스트림(키보드)로 부터  입력된 값을 1바이트로 읽어서 0 ~ 255의 정수를 int 값으로 반환해 준다.

- 매개변수 : X

- 리턴값(리턴자료형) : 0~255(int)

* read는 한 문자만 읽어온다.

* 더 이상 가져올 값이 없으면 -1을 반환한다.

 

2. System.in.skip()

- 기능 : 키보드에 남아있는 buffer(버퍼)를 매개변수만큼 버려준다.

- 매개변수 : long n

- 리턴값(리턴자료형) : 매개변수로 받은 값만큼 건너뛰고 난 수

 

3. System.in.available()

- 기능 : 키보드에 남아있는 모든 버퍼를 버린다.

- 매개변수 : X

- 리턴값(리턴자료형) : 남아있는 모든 버퍼를 버리고 난 수

 

코드 예제)

package days07;

import java.io.IOException;

public class Ex05 {

	public static void main(String[] args) throws IOException {
		// System.in.read(); 메서드
		// end of stream : 더 이상 가져올 값이 없으면 -1을 하여 값을 돌려준다(반환)
		
		// 1번
		char one;
		System.out.print("한 문자 입력? ");
		// one = scanner.next().charAt(0)
		// 'a''\r''\n'
		one = (char)System.in.read(); // 매개변수 값 int 97 'a' => a입력 후 엔터를 치면'\r'+'n'(CR+LF) 이 들어가짐
		System.out.println(one);
		
		// System.in.read(); // 13을 읽어가서 버리겠다.(1개를 버리겠다)
		// System.in.read(); // 10을 읽어가서 버리겠다.(1개를 버리겠다)
        
		// System.in.skip(3); // 키보드 버퍼에 남아있는 2개를 버리겠다.
        
		System.in.skip(System.in.available());  // 키보드 버퍼에 남아있는 모든 것들을 버리겠다.
		
		// 2번
		System.out.print("한 문자 입력?");
		one = (char)System.in.read();  // one = '\r'  => 개행(줄바꿈)문자 == 새줄문자 == CR 13  LF \n 10
		System.out.println(one);
		
		// 입력스트림 : abcde엔터(==13/10)
		System.out.println("=end=");
		
	} // main 

} // class
728x90
반응형