Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 표준 입력(System.in)으로 데이터를 읽는 방법

Java에서 표준 입력(stdin)은 System.in 객체로 표현됩니다. System.inInputStream 클래스의 인스턴스로, 모든 메서드가 문자열(String)이 아닌 바이트(byte) 단위로 동작합니다. 따라서 키보드로부터 데이터를 읽어 들이려면 Reader 계열의 클래스나 Scanner 클래스를 활용하는 것이 일반적입니다.

예제 1 — BufferedReader 사용

BufferedReader와 InputStreamReader를 조합하면 콘솔 입력을 한 줄씩 문자열로 읽을 수 있습니다. 이후 Integer.parseInt()를 이용해 숫자로 변환합니다.

import java.io.*;
public class ReadDataFromInput {
    public static void main (String[] args) {
        int firstNum, secondNum, result;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("Enter a first number:");
            firstNum = Integer.parseInt(br.readLine());
            System.out.println("Enter a second number:");
            secondNum = Integer.parseInt(br.readLine());
            result = firstNum * secondNum;
            System.out.println("The Result is: " + result);
        } catch (IOException ioe) {
            System.out.println(ioe);
        }
    }
}

실행 결과

Enter a first number:
15
Enter a second number:
20
The Result is: 300

예제 2 — Scanner 사용

Scanner 클래스를 사용하면 예외 처리 없이도 간결하게 표준 입력을 다룰 수 있어 코드가 더 직관적입니다.

import java.util.*;
public class ReadDataFromScanner {
    public static void main (String[] args) {
        int firstNum, secondNum, result;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a first number:");
        firstNum = Integer.parseInt(scanner.nextLine());
        System.out.println("Enter a second number:");
        secondNum = Integer.parseInt(scanner.nextLine());
        result = firstNum * secondNum;
        System.out.println("The Result is: " + result);
    }
}

실행 결과

Enter a first number:
20
Enter a second number:
25
The Result is: 500

정리

BufferedReader는 대량의 데이터를 빠르게 처리할 수 있는 반면, IOException 처리가 필요합니다. 반면 Scanner는 nextInt(), nextLine() 등 편리한 파싱 메서드를 제공하지만 상대적으로 속도가 느립니다. 간단한 프로그램에는 Scanner를, 성능이 중요한 환경에서는 BufferedReader를 선택하는 것이 좋습니다.