[Java] 03. 화면에서 입력받기

2024. 3. 12. 22:15·Java/Basic

화면에서 입력받기


화면에서 입력받기 - Scanner

  1. import java.util.* // Scanner클래스를 사용하기 위해 import

  2. Scanner scanner = new Scanner(System.in); // Scanner 클래스의 객체를 생성

  3. nextLine()이나 nextInt(), nextFloat()를 이용하기

String input = scanner.nextLine(); // 입력받은 내용을 input에 저장
int num = Integer.parseInt(input); // 입력받은 내용을 int타입의 값으로 변환
// float의 경우 Float.parseFloat() 사용
int num2 = scanner.nextInt(); // 정수를 입력받아 변수 num에 저장
  • 예제
import java.util.*;        // Scanner를 사용하기 위해 추가

class ScannerEx {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.printf("두 자리 정수를 하나 입력해주세요.>");
        String input = scanner.nextLine();
        int num = Integer.parseInt(input);    // 입력받은 문자열을 숫자로 변환

        System.out.println("입력내용:" + input);
        System.out.printf("num=%d%n", num);
    }
}

실행 결과

두 자리 정수를 하나 입력해주세요.>23
입력내용:23
num=23
  • Integer.parseInt()에서 숫자가 아닌 문자, 기호, 공백을 입력받지 않도록 주의하자

화면에서 입력받기 - BufferedReader

// 1. import
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
...
public static void main(String[] args) throws IOException {
    // 2. BufferedReader 객체 생성
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    // 3. readLine() 메소드를 통해 문자열 저장
    String st = br.readLine();
    // 4. 문자열 parsing
    int a = Integer.parseInt(br.readLine());
    int b = Integer.parseInt(st);
}

Scanner vs BufferedReader

  • Scanner는 키보드의 키를 누르는 즉시 바로 전달 됨(1KB)

  • BufferedReader는 입력 받은 값을 버퍼(8192 char)에 담아두었다가 한 번에 프로그램에 전송한다

    • 따라서 대량의 데이터를 처리할 때 입출력의 호출 횟수가 줄어 빠르고 효율적이게 됨
  • Scanner는 nextInt(), nextFloat(), 정규표현식 등을 이용해 데이터를 구분지어 읽어들일 수 있다.

    • 따라서 작은 양의 데이터를 다룰 때 직관적이고 매우 편리함.
  • BufferedReader는 주로 문자열로 데이터를 읽어 필요한 경우 다른 타입으로 변환해야 함.

  • BufferedReader가 Scanner보다 멀티스레드 환경에서 안전함

  • 결국 상황에 따라 Scanner와 Buffered Reader를 적절히 사용하는게 좋다

(스트림에 관한 내용은 추후 다시 다룰 예정)

참조) Java의 정석 3rd edition(남궁성, 도우출판)

'Java > Basic' 카테고리의 다른 글

[Java] 05. 배열  (0) 2024.03.12
[Java] 04. 변수  (0) 2024.03.12
[Java] 02. 자바로 프로그램 작성하기  (0) 2024.01.20
[Java] 01. 자바(Java Programming Language)  (0) 2024.01.19
'Java/Basic' 카테고리의 다른 글
  • [Java] 05. 배열
  • [Java] 04. 변수
  • [Java] 02. 자바로 프로그램 작성하기
  • [Java] 01. 자바(Java Programming Language)
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (452) N
      • Software Development (27) N
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8) N
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71) N
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2) N
      • Spring (53) N
        • Framework (12)
        • MVC (23)
        • Transaction (3) N
        • AOP (11) N
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (125)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (1)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1) N
        • Docker (1) N
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77) N
        • Kotlin (1) N
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[Java] 03. 화면에서 입력받기
상단으로

티스토리툴바