표준 입력 읽기
표준 입력 읽기
콘솔 프로그램을 만들 때 가장 먼저 맞닥뜨리는 게 바로 입력을 받는 일이에요. 사용자가 키보드로 뭘 입력했는지를 읽어 와야 하죠. Kotlin에서는 이 표준 입력을 읽는 방식이 크게 두 가지라서, 상황에 맞게 골라 쓸 수 있어요.
출처: Kotlin 공식 문서
본문
표준 입력에서 데이터를 읽기 위해 Java는 Scanner 클래스를 제공해요. Kotlin도 표준 입력을 읽는 두 가지 주요 방법을 지원하는데, 하나는 Java와 비슷한 Scanner 클래스, 다른 하나는 readln() 함수예요.
참고: Java의 Scanner는 느린 도구예요. Scanner가 제공하는 특정 기능이 꼭 필요할 때만 쓰고, 그 외에는 일반적으로 Kotlin의
readln()함수로 표준 입력을 읽는 것이 더 좋아요.
Java Scanner로 표준 입력 읽기
Java에서는 표준 입력을 주로 System.in 객체로 접근해요. Scanner 클래스를 임포트하고 객체를 만든 뒤, .nextLine()이나 .nextInt() 같은 메서드로 여러 데이터 타입을 읽죠.
// Java 구현
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 한 줄의 입력을 읽어요. 예: Hi there!
System.out.print("Enter a line: ");
String line = scanner.nextLine();
System.out.println("You entered: " + line);
// You entered: Hi there!
// 정수를 읽어요. 예: 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 라이브러리와의 상호 운용성(interoperability) 덕분에, Kotlin 코드에서 Java Scanner를 별다른 설정 없이 그대로 쓸 수 있어요.
Kotlin에서 Java Scanner를 사용하려면 Scanner 클래스를 임포트하고, 표준 입력 스트림을 나타내면서 데이터를 어떻게 읽을지 정해 주는 System.in 객체를 넘겨서 초기화하면 돼요. 문자열이 아닌 값도 읽을 수 있는 .nextLine(), .next(), .nextInt() 같은 읽기 메서드를 쓸 수 있어요.
// Java Scanner를 임포트해요
import java.util.Scanner
fun main() {
// Scanner를 초기화해요
val scanner = Scanner(System.`in`)
// 문자열 한 줄을 읽어요. 예: "Hello, Kotlin"
val line = scanner.nextLine()
print(line)
// Hello, Kotlin
// 문자열을 읽어요. 예: "Hello"
val string = scanner.next()
print(string)
// Hello
// 숫자를 읽어요. 예: 123
val num = scanner.nextInt()
print(num)
// 123
}
Java Scanner로 입력을 읽을 때 유용한 다른 메서드로 .hasNext(), .useDelimiter(), .close()가 있어요.
.hasNext()메서드는 입력에 더 읽을 데이터가 있는지 확인해요. 남은 요소가 있으면 불리언 값true를, 더 이상 남은 요소가 없으면false를 반환해요..useDelimiter()메서드는 입력 요소를 나누는 구분자(delimiter)를 설정해요. 기본값은 공백(whitespace)이지만 다른 문자를 지정할 수도 있어요. 예를 들어.useDelimiter(",")는 쉼표로 구분된 입력 요소를 읽어요..close()메서드는 Scanner와 연결된 입력 스트림을 닫아, Scanner로 더 이상 입력을 읽지 못하게 해요.
참고: Java Scanner를 다 쓴 뒤에는 항상
.close()메서드를 호출하세요. Scanner를 닫으면 그것이 사용하던 리소스가 해제되고, 프로그램이 올바르게 동작해요.
readln()으로 표준 입력 읽기
Java Scanner 외에 Kotlin에는 readln() 함수가 있어요. 이것이 가장 간단한 입력 방식인데, 표준 입력에서 텍스트 한 줄을 읽어 문자열로 반환해 주죠.
// 문자열을 읽어요. 예: Charlotte
val name = readln()
// 문자열을 읽고 정수로 변환해요. 예: 43
val age = readln().toInt()
println("Hello, $name! You are $age years old.")
// Hello, Charlotte! You are 43 years old.
더 자세한 내용은 표준 입력 읽기 문서를 참고하세요.
더 알아보기 (Learn more)
표준 입력과 함께 출력하는 방법이나 문자열을 숫자로 변환하는 방법까지 이어서 보면 콘솔 프로그램의 기본기가 완성돼요. 이 페이지에서 쓴 readln().toInt() 같은 변환 방식과 Java Scanner의 다양한 읽기 메서드에 대한 자세한 내용은 관련 문서에서 확인할 수 있어요.