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

Java에서 한 줄로 사용자에게 여러 값을 입력받는 방법

Java 프로그래밍을 하다 보면 사용자로부터 여러 개의 값을 한 번에 입력받아야 하는 경우가 자주 발생합니다. 이럴 때 Scanner 클래스를 활용하면 한 줄에 입력된 여러 값을 손쉽게 처리할 수 있습니다.

예제 코드

다음은 한 줄에 실수형(double) 값과 정수형(int) 값을 함께 입력받는 예제입니다.

import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        System.out.print("Enter two floating point values : ");
        Scanner my_scan = new Scanner(System.in);
        double double_val = my_scan.nextFloat();
        int int_val = my_scan.nextInt();
        System.out.println("The floating point value is : " + double_val + " and the integer value is : " + int_val);
    }
}

입력 예시

56.789 99

출력 결과

Enter two floating point values : The floating point value is : 56.78900146484375 and the integer value is : 99

코드 동작 원리

위 코드에서 Demo라는 이름의 클래스가 main 함수를 포함하고 있습니다. main 함수 내부에서는 먼저 Scanner 객체를 생성한 뒤, nextFloat() 메서드로 실수 값을, nextInt() 메서드로 정수 값을 순서대로 파싱합니다.

입력된 두 값은 표준 입력(standard input)으로부터 읽어 들여지며, 이후 콘솔 화면에 출력됩니다.

Scanner의 장점

Scanner 객체는 입력값을 여러 개의 문자열로 분리하지 않고 직접 파싱한다는 점이 큰 장점입니다. 또한 사용자는 데이터를 한 줄에 모두 입력해도 되고, 여러 줄에 나누어 입력해도 무방합니다. Scanner는 공백이나 줄바꿈을 기준으로 자동으로 값을 구분하여 처리하기 때문입니다.

참고로 위 출력 결과에서 실수 값이 56.78900146484375처럼 표시되는 이유는 nextFloat()이 float 타입으로 값을 읽은 후 double 변수에 저장되면서 발생하는 부동소수점 정밀도 차이 때문입니다. 더 높은 정밀도가 필요하다면 nextDouble() 메서드를 사용하는 것이 좋습니다.