[Java] Input 값 입력 받는 방법 ① - Scanner 클래스

2023. 8. 16. 01:41·개발 ━━━━━/Java
반응형

Scanner 클래스

Scanner 클래스의 특징

  1. Scanner 를 사용 시 java.util 패키지의 Scanner 클래스를 import 해주어야 한다.
  2. 입력 받을 시 Scanner 클래스의 메서드 (method) 로 입력받을 수 있다.
  3. Scanner 클래스의 입력 메소드들은 공백과 개행을 기준으로 인식한다.

 

Scanner 사용 순서

1. Scanner 클래스를 import 해준다.

import java.util.Scanner;

 

2. Scanner 객체를 생성한다.

Scanner sc = new Scanner(System.in);
// System.in - 입력한 값을 Byte 단위로 읽어주는 Java 의 표준 입력 스트림

 

3. 생성한 객체를 이용해 데이터 타입마다 구분된 메서드로 입력 값을 받는다.

String str = sc.next();
메소드 기능
next() String을 읽음. 토큰(Token)을 기준으로 읽음.
nextLine() String을 읽음. 개행(Enter)을 기준으로 읽음.
nextInt() int 를 읽음
nextBoolean() boolean 을 읽음
nextByte() byte 를 읽음
nextShort() short 를 읽음
nextLong() long 을 읽음
nextFloat() float 를 읽음
nextDouble() double 을 읽음

( * 토큰(Token) : 공백문자 (Spacebar, Tab, Enter 등) 로 구분되는 요소)

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println(str);
    }
}

 

next() vs nextLine()

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int num;
        String str;
        System.out.println("num입력");
        num = sc.nextInt();
 
        System.out.println("str입력");
        str = sc.nextLine();
 
        System.out.println("num : " + num);
        System.out.println("str : " + str);
        sc.close();
    }
}

// 출력
num : 10
str :

코드의 의도는 num 과 str 을 입력받는 것인데 num 을 입력하고 나면 str 입력은 스킵되고 바로 주석에 있는 대로 출력된다.

 

이는 next() 는 개행 문자를 무시하고 입력을 받고, nextLine() 은 \n 단위로 입력을 받기 때문인데

위 코드에서 num 을 next() 로 입력받을 때 10을 입력 후 enter (\n) 을 쳤지만 10 까지만 인식하고 \n 은 버퍼에 그대로 남게 된다.

str 은 nextLine() 으로 입력을 받는데 버퍼에 이미 \n 이 남아있기 때문에 따로 입력 과정을 거치지 않고 바로 결과값이 출력되게 된다.

 

* 해결 방법

nextLine() 을 next() 로 바꿔준다.

반응형

'개발 ━━━━━ > Java' 카테고리의 다른 글

[Java] 기초 문법 - 컬렉션 (Collection)  (0) 2023.08.16
[Java] 기초 문법 - 배열  (1) 2023.08.16
[Java] 기초 문법 - 조건문, 반복문  (2) 2023.08.15
[Java] 기초 문법 - 연산자  (4) 2023.08.15
[Java] 기초 문법 - 자료형  (1) 2023.08.14
'개발 ━━━━━/Java' 카테고리의 다른 글
  • [Java] 기초 문법 - 컬렉션 (Collection)
  • [Java] 기초 문법 - 배열
  • [Java] 기초 문법 - 조건문, 반복문
  • [Java] 기초 문법 - 연산자
GukJang
GukJang
•  ⌘ ⌥ •
    반응형
  • GukJang
    SPACE
    GukJang
  • 전체
    오늘
    어제
    • Blog (73)
      • 개발 ━━━━━ (68)
        • Java (14)
        • C++ (1)
        • HTML (1)
        • Spring(boot) (7)
        • Dev (9)
        • SQL (1)
        • CS (2)
        • Git (1)
        • Troubleshoot (14)
        • Algorithm (2)
        • Definition (1)
        • Dev Life (2)
        • TIL (7)
        • 항해 (6)
      • 공돌 ━━━━━ (4)
        • 플젝 (2)
        • 장비 (1)
        • 부품 (1)
      • 독서 ━━━━━ (1)
  • 블로그 메뉴

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

    • Github
  • 공지사항

  • 인기 글

  • 태그

    마이크로파이썬
    AWS
    알고리즘
    오픈소스 기여
    Java
    백준
    사전 스터디
    github actions
    Python
    CI CD
    mysql
    spring
    docker
    SpringBoot
    자바
    항해99
    docker volume
    micropython
    EC2
    electron-builder
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
GukJang
[Java] Input 값 입력 받는 방법 ① - Scanner 클래스
상단으로

티스토리툴바