JAVA - 스캐너 클래스 (Scanner Class)

2022. 1. 26. 18:06·JAVA
728x90


Scanner Class

 

 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스.

 

특징

1. 기본적인 데이터 타입들을 Scanner의 메소드를 사용하여 입력받을 수 있다.

 

 예를 들어 117을 입력하고자 할 때, String(문자열)로 입력받고 싶으면 next( ) 나 nextLine( )을 사용하고, int(정수)로 입력받고 싶다면 nextInt( )를 사용하여 입력받으면 알아서 해당 타입으로 입력된다.

 

2. Scanner을 사용할 시에 util 패키지를 경로의 Scanner클래스를 호출해야 한다.

 

 JAVA에서 쓰이는 대부분의 클래스는 lang 패키지가 아니라면 import 를 통해 호출해주어야 한다. 

 Scanner의 경우는 java.util 패키지에 있다.

 

3. 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다.

 

 Scanner의 입력 메소드들은 대부분 공백과 개행 (' ', '\t', '\r', '\n' 등)을 기준으로 읽는다. 이 덕분에 사용자의 편의에 따라 쉽게 입력을 받을 수 있다.

 


 

Scanner 사용법

 

Step1. import 문 

 

 앞서 특징에서 언급했듯 Scanner 클래스를 사용하기 위해서는 호출해주어야 한다.

 

 JAVA의 경우 java.util 패키지 안에 Scanner 클래스가 있으므로 다음과 같이 import 문으로 해당 클래스 경로를 호출하도록 한다. 

 

import java.util.Scanner; // Scanner 클래스 호출
import java.util.*; // java.util 디렉토리 안에 있는 모든 클래스를 import

 

Step2. Scanner 객체 생성 

 

 Step1 에서 Scanner 클래스를 호출했다. 그다음으로 해야 할 것이 바로 객체 생성이다. 

 

 기본적으로 객체 생성하는 방법은 아래와 같다.

 

클래스_이름 객체_이름 = new 클래스_이름();

 

우리는 Scanner 클래스를 사용할 것이기 때문에 클래스_이름에 Scanner가 들어가야 한다. 

객체_이름은 사용자가 편한 대로 지정하면 된다.

(대체로 Scanner의 경우 객체이름은 in, input, sc, scan 이렇게 4가지를 가장 많이 쓰인다.)

 

Scanner 클래스의 객체를 아래와 같이 생성해주면 된다.

Scanner in = new Scanner(System.in); // Scanner 객체 생성
/* 모두 동일하게 객체 생성
Scanner input = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
Scanner scan = new Scanner(System.in);
*/

 

여기서 궁금한 점,

 Scanner를 생성할 때 System.in이 들어간다는 것이다. 

System.in 은 사용자로부터 입력을 받기 위한 입력 스트림이다. 

- 키보드와 연결된 자바의 표준 입력 스트림

- 입력되는 키를 바이트로 리턴하는 저수준 스트림

- System.in을 직접 사용하면 바이트를 문자나 숫자로 변환하는 많은 어려움이 있음

 

Step3.  Method를 이용해서 입력하기 

 

 JAVA에서 Scanner의 입력 메소드는 아래와 같은 종류들이 있다.

 

in.nextBoolean() // boolean 형 입력 및 리턴

in.nextByte() // byte 형 입력 및 리턴
in.nextShort() // short 형 입력 및 리턴
in.nextInt() // int 형 입력 및 리턴
in.nextLong() // long형 입력 및 리턴

in.nextFloat() // float 형 입력 및 리턴
in.nextDouble() // double 형 입력 및 리턴

in.next() // String 형 입력 및 리턴 (공백을 기준으로 한 단어를 읽는다.)
in.nextLine() // String 형 입력 및 리턴 (개행을 기준으로 한 줄을 읽는다.)

 

기본적으로 String 입력만 제외하면 

모두 next+Type( ) 의 조합으로 사용하면 된다. 

 

좀 더 살펴보자면 

next( ) 와 nextLine( )의 차이가 무엇일까? 

 

next( )는 '한 단어', 즉 공백을 기준으로 단어 하나만 읽어 들인다.

nextLine( )은 '한 줄', 즉 한 줄에 입력된 모든 단어를 읽어 들인다.

 

예를 들어

 

"오늘은 스캐너 클래스를 공부하는 날" 이라고 입력하면, "오늘은" 만 str에 담겼다.

하나의 단어, 즉 앞서 말했던 공백 또는 줄 바꿈(개행)까지만 읽는다. 

(만약 위의 한 문장을 next( )로 모두 읽기 위해서는 5번 사용해야 한다.)

 

nextLine( )은 다르다.

 

한 줄 안에 공백 유무와 상관없이 개행(줄바꿈)까지 읽는 것을 볼 수 있다.

 

Reference

1. 썸머워즈님의 [JAVA] 자바_스캐너(Scanner)

2. Stranger's LAB - 자바 [JAVA] - 스캐너(Scanner) 클래스와 입력

3. W3Schools - Java User Input (Scanner)

저작자표시 (새창열림)

'JAVA' 카테고리의 다른 글

[JAVA] Exception in thread "main" java.lang.ArithmeticException: / by zero  (2) 2022.03.09
JAVA - 반복문 (for문)  (0) 2022.02.05
JAVA - 배열 (Array)  (2) 2022.01.31
JAVA - 객체 지향 프로그래밍 (OOP)  (16) 2022.01.12
JAVA - 변수(Variable)  (0) 2021.12.15
'JAVA' 카테고리의 다른 글
  • JAVA - 반복문 (for문)
  • JAVA - 배열 (Array)
  • JAVA - 객체 지향 프로그래밍 (OOP)
  • JAVA - 변수(Variable)
ro117youshin
ro117youshin
코딩 / 외국어공부 (영어, 중국어) / 독서 등 자기계발을 기록합니다.
  • ro117youshin
    Taking an extra step
    ro117youshin
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • DDD (5)
      • JAVA (13)
      • Spring Boot (2)
      • Spring (4)
      • MySQL (1)
      • C (1)
      • Algorithm & Data Structure (34)
        • study (15)
        • programmers (0)
        • boj (18)
        • assignments (1)
      • CS: Computer Science (6)
        • CS50 2019 (4)
        • Network (2)
        • Database (0)
      • Git (3)
      • foreign language (16)
        • English (0)
        • Chinese (16)
      • BOOK (2)
      • ETC (2)
      • youtube.com|user|egoing2 (64)
        • WEB1 - HTML & Internet (5)
        • WEB2 - CSS (9)
        • WEB2 - JavaScript (18)
        • JavaScript Immutability (0)
        • DATABASE1 (4)
        • DATABASE2 MySQL (12)
        • JAVA1 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mysql
    javascript
    Domain Driven Design
    개발공부
    최범균
    baekjoon
    HSK6급모의고사
    variable
    HTML
    Java
    HSK6급
    나의 앱 만들기
    알고리즘문제
    코딩공부
    객체
    Java자료구조
    DATABASE2
    js
    자바
    도메인 주도 설계
    ddd
    JAVA1
    HSK6급필수어휘
    중국어공부
    BOJ
    HSK6급공부
    생활코딩
    css
    조건문
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ro117youshin
JAVA - 스캐너 클래스 (Scanner Class)
상단으로

티스토리툴바