되자!백엔드개발자

JAVA(자바) 키 입력 Scanner 본문

개발공부/JAVA

JAVA(자바) 키 입력 Scanner

HyunJng 2022. 7. 14. 00:42

각 언어마다 입력받는 함수들이 다르다. 여러가지가 있겠지만 C/C++ 에서는 scanf, cin 을, 파이썬에선 input을 많이 사용한다. 자바에서는 아래와 같은 형식을 많이 사용한다.

import java.util.Scanner

Scanner sc = new Scanner(System.in);

 

 

Scanner 구조


1. import java.util.Scanner

Scanner을 사용하기 위해서는 반드시 java.util.Scanner을 import 시켜줘야한다. Scanner은 우리가 직접 짜는게 아니라 이미 다른 개발자들이 작성해놓은 코드를 사용하는 것이기에 컴파일러에게 library 경로를 알려줘야 하기 때문이다. java.util 패키지 안에 들어있는 Scanner 클래스를 사용함을 나타낸다. 

 

2. Scanner 객체 생성

sc(scanner 줄인 것) 라는 Scanner 객체를 생성하였다. sc는 System.in객체를 이용하여 키보드로부터 일렬의 바이트 정보들을 입력받고 이 바이트를 실수, 문자, 문자열 등 자바 응용 프로그램이 원하는 타입으로 변환하여 반환해준다.

 

3. System.in

System.in 은 키보드 장치를 직접 제어하고 키 입력을 받는 표준 입력 스트림 객체이다.  입력된 키를 단순한 바이트 정보로 응용 프로그램에 전달한다.  즉 10101110 처럼 이진수로 받아오는 것인데 우리는 코딩할 때 편하기 위해서는 문자나 숫자로 변환해야 한다. 이 역할을 Scanner이 해주는 것이다.

 

자세하게 알고 싶으면 아래 블로그를 참고하면 되지만 나는 자바를 사용만 할 줄 알면 되서 굳이 안봤다!

https://st-lab.tistory.com/41

 

JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]

이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고

st-lab.tistory.com

 

 

 

Scanner 특징


  • 공백문자(' ', '\n', '\t')을 기준으로 분리하여 토큰 단위로 읽는다.
    "오늘 2번 밥을 먹었다!"를 입력하면 "오늘", "2번", "밥을", "먹었다!"의 토큰 단위로 읽는다. 받아들이려는 토큰의 형식마다 필요한 메소드가 다르며 만약 공백이 낀 문자열을 입력받고 싶다면 nextLine()을 사용하면 된다.
//정수를 입력받을 때
int age = sc.nextInt();

//한 토큰의 문자열을 입력받을 때
String name = sc.next();

//한 라인을 읽고 싶을 때
String introduce = sc.nextLine();
  • Scanner 객체의 닫기
    Scanner객체를 종류하려면 다음과 같이 닫아준다.
sc.close();


Scanner 객체가 닫히면 System.in도 함께 닫히므로 더 이상 System.in을 사용할 수 없다. 즉, 그 이후 Scanner을 다시 선언해도 오류가 뜨는 것이다. 그러므로 하나만 생성해서 공유하는 것이 바람직하다.
소스에 Scanner을 닫는 코드가 없으면 컴파일 경고는 뜰 수 있지만 실행에 문제가 없고 프로그램이 종료되면 자동으로 닫힌다.