데이터 입력

JunHyeok Seo·2023년 7월 15일

java

목록 보기
1/4

데이터 입력 방법

  1. java.io 패키지 사용 (예외처리 필수)
  2. Scanner 클래스 사용 (예외처리 형식을 요구하지 않음)
  3. System.in.read() (키코드 입력)

System.in.read()

키보드에서 키 하나를 입력하면 프로그램에서는 숫자로 된 키코드를 읽을 수 있다. 예를 들어 알파벳 ‘a’를 입력하면 97번을, 숫자 1을 입력하면 49번을 읽을 수 있다.

키코드를 읽기 위해서는 System.in.read()를 이용하면 된다.

System.in.read()가 실행되면 Consol은 Enter 키가 입력될 때까지 대기 상태가 된다. Enter 키가 입력되면 입력된 키들에 대한 키코드를 하나씩 읽는다. Enter 는 캐리지리턴(CR : 13)과 라인 피드(LF: 10)로 구성된 2개의 키코드가 입력된다.

System.in.read()의 단점은 키코드를 하나씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없다는 것이다. 그리고 키보드로부터 입력된 내용을 통 문자열로 읽지 못한다. 이러한 단점을 보완하기 위해 Scanner 클래스를 이용한다.

💡 throws IOException : System.in.read()에 대한 예외 처리 코드
import java.io.IOException;

public class ContinewKeyCodeReadExample {
	public static void main(String[] args) throws IOException {
		int keyCode;
		
		while(true) {
			keyCode = System.in.read();
			System.out.println("keyCode : " + keyCode);
	}
}

Scanner 클래스

💡 sc + Ctrl + Space ⇒ 자동완성 + 클래스 자동 import

생성자 : Scanner(InputStream source) 등

메소드 : nextInt() 등

// 표준입력 장치인 키보드로 입력을 받기 위해서 Scanner 객체를 생성한다.
// 대부분의 클래스들은 new 연산자를 사용하여 객체를 생성
// 유일하게 String 클래스만이 new 없이 객체를 생성할 수 있다.
// 매개변수로 표준 입력 스트림을 받음
// 입력 스트림을 사용하기 위해 System 클래스의 정적 필드 in을 사용
// System은 정적 클래스이기 때문에 객체 생성 없이 메소드 사용 가능
Scanner sc = new Scanner(System.in);

// 정수형태로 입력을 받기 위해서 nextInt() 메소드로 입력을 받는다.
int n1 = sc.nextInt();	// 공백(공백 + 개행)으로 문자열 구분
int n2 = sc.nextInt();
System.out.println("n1 : " + n1);
System.out.println("n2 : " + n2);

데이터 입력

방법

  1. java.io 패키지 사용 (예외처리 필수)
  2. Scanner 클래스 사용 (예외처리 형식을 요구하지 않음)

System.in.read()

키보드에서 키 하나를 입력하면 프로그램에서는 숫자로 된 키코드를 읽을 수 있다. 예를 들어 알파벳 ‘a’를 입력하면 97번을, 숫자 1을 입력하면 49번을 읽을 수 있다.

키코드를 읽기 위해서는 System.in.read()를 이용하면 된다.

System.in.read()가 실행되면 Consol은 Enter 키가 입력될 때까지 대기 상태가 된다. Enter 키가 입력되면 입력된 키들에 대한 키코드를 하나씩 읽는다. Enter 는 캐리지리턴(CR : 13)과 라인 피드(LF: 10)로 구성된 2개의 키코드가 입력된다.

System.in.read()의 단점은 키코드를 하나씩 읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없다는 것이다. 그리고 키보드로부터 입력된 내용을 통 문자열로 읽지 못한다. 이러한 단점을 보완하기 위해 Scanner 클래스를 이용한다.

💡 throws IOException : System.in.read()에 대한 예외 처리 코드
import java.io.IOException;

public class ContinewKeyCodeReadExample {
	public static void main(String[] args) throws IOException {
		int keyCode;
		
		while(true) {
			keyCode = System.in.read();
			System.out.println("keyCode : " + keyCode);
	}
}

Scanner 클래스

💡 sc + Ctrl + Space ⇒ 자동완성 + 클래스 자동 import

생성자 : Scanner(InputStream source) 등

메소드 : nextInt() 등

// 표준입력 장치인 키보드로 입력을 받기 위해서 Scanner 객체를 생성한다.
// 대부분의 클래스들은 new 연산자를 사용하여 객체를 생성
// 유일하게 String 클래스만이 new 없이 객체를 생성할 수 있다.
// 매개변수로 표준 입력 스트림을 받음
// 입력 스트림을 사용하기 위해 System 클래스의 정적 필드 in을 사용
// System은 정적 클래스이기 때문에 객체 생성 없이 메소드 사용 가능
Scanner sc = new Scanner(System.in);

// 정수형태로 입력을 받기 위해서 nextInt() 메소드로 입력을 받는다.
int n1 = sc.nextInt();	// 공백(공백 + 개행)으로 문자열 구분
int n2 = sc.nextInt();
System.out.println("n1 : " + n1);
System.out.println("n2 : " + n2);

0개의 댓글