Programming Language/Java

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

lumana 2024. 3. 12. 22:15

화면에서 입력받기


화면에서 입력받기 - 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(남궁성, 도우출판)

'Programming Language > Java' 카테고리의 다른 글

[Java] 06. OOP - 클래스와 객체  (0) 2024.03.12
[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