Skip to content

표준 입력

NOTE

Java Scanner는 느린 도구입니다. 제공하는 특정 기능이 필요할 때만 사용하세요.

그렇지 않다면, Kotlin의 readln() 함수를 사용하여 표준 입력 읽기를 하는 것이 일반적으로 더 좋습니다.

표준 입력을 읽기 위해 Java는 Scanner 클래스를 제공합니다. Kotlin은 표준 입력을 읽는 두 가지 주요 방법을 제공합니다. Java와 유사한 Scanner 클래스와 readln() 함수입니다.

Java Scanner로 표준 입력 읽기

Java에서는 일반적으로 System.in 객체를 통해 표준 입력에 접근합니다. Scanner 클래스를 임포트하고, 객체를 생성한 다음, .nextLine(), .nextInt()와 같은 메서드를 사용하여 다양한 데이터 타입을 읽어야 합니다.

java
//Java implementation
import java.util.Scanner;

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

        // Reads a single line of input. For example: Hi there!
        System.out.print("Enter a line: ");
        String line = scanner.nextLine();
        System.out.println("You entered: " + line);
        // You entered: Hi there!

        // Reads an integer. For example: 08081990
        System.out.print("Enter an integer: ");
        int number = scanner.nextInt();
        System.out.println("You entered: " + number);
        // You entered: 08081990

        scanner.close();
    }
}

Kotlin에서 Java Scanner 사용하기

Kotlin의 Java 라이브러리와의 상호 운용성 덕분에, 별도의 설정 없이 Kotlin 코드에서 Java Scanner에 접근할 수 있습니다.

Kotlin에서 Java Scanner를 사용하려면 Scanner 클래스를 임포트하고, 표준 입력 스트림을 나타내며 데이터를 읽는 방법을 지시하는 System.in 객체를 전달하여 초기화해야 합니다. 문자열 외의 값을 읽기 위해 .nextLine(), .next(), .nextInt()와 같은 사용 가능한 읽기 메서드를 사용할 수 있습니다.

kotlin
// Imports Java Scanner
import java.util.Scanner

fun main() {
    // Initializes the Scanner
    val scanner = Scanner(System.`in`)

    // Reads a whole string line. For example: "Hello, Kotlin"
    val line = scanner.nextLine()
    print(line)
    // Hello, Kotlin

    // Reads a string. For example: "Hello"
    val string = scanner.next()
    print(string)
    // Hello

    // Reads a number. For example: 123
    val num = scanner.nextInt()
    print(num)
    // 123
}

Java Scanner로 입력을 읽는 데 유용한 다른 메서드로는 .hasNext(), .useDelimiter(), .close()가 있습니다.

  • .hasNext() 메서드는 입력에 더 많은 데이터가 사용 가능한지 확인합니다. 반복할 남은 요소가 있으면 부울 값 true를 반환하고, 입력에 더 이상 요소가 남아 있지 않으면 false를 반환합니다.

  • .useDelimiter() 메서드는 입력 요소를 읽기 위한 구분자를 설정합니다. 구분자는 기본적으로 공백이지만, 다른 문자를 지정할 수 있습니다. 예를 들어, .useDelimiter(",")는 쉼표로 구분된 입력 요소를 읽습니다.

  • .close() 메서드는 Scanner와 연결된 입력 스트림을 닫아 Scanner를 통한 추가적인 입력 읽기를 방지합니다.

NOTE

Java Scanner 사용을 마쳤을 때는 항상 .close() 메서드를 사용하세요. Java Scanner를 닫으면 Scanner가 사용하는 리소스가 해제되고 프로그램의 올바른 동작을 보장합니다.

readln()으로 표준 입력 읽기

Kotlin에서는 Java Scanner 외에도 readln() 함수를 사용할 수 있습니다. 이것은 입력을 읽는 가장 간단한 방법입니다. 이 함수는 표준 입력에서 한 줄의 텍스트를 읽고 문자열로 반환합니다.

kotlin
// Reads a string. For example: Charlotte
val name = readln()

// Reads a string and converts it into an integer. For example: 43
val age = readln().toInt()

println("Hello, $name! You are $age years old.")
// Hello, Charlotte! You are 43 years old.

더 자세한 내용은 표준 입력 읽기를 참조하세요.