(Kotlin) Scanner로 입력받기

2020. 7. 13. 18:24 안드로이드/코틀린

이번 글은 콘솔에서 데이터를 입력 받는 부분에 대해서 알아 보겠습니다.


사용자로부터 데이터를 입력 받기 위해서는 Scanner 객체에 System.in(InputStream)을 넣어서 생성한 인스턴스를 사용해야합니다.


System.in은 키보드와 연결 된 자바의 표준 입력 스트림으로 사용자가 키보드를 통해 입력한 데이터를 컴퓨터를 통해 프로그램에 전달해주는 역할을 합니다.


Scanner객체는 System.in을 통해 전달 된 데이터를 언어의 기본타입으로 변환해주는 역할을 합니다.


위에 설명했던 내용들을 Kotlin 코드로 아래와 같이 나타낼 수 있습니다.

import java.util.Scanner

fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)
}

Java를 했던 사람이라면 위 코드가 어떤 형태인지 금방 이해 할 것입니다.


Scanner객체에 System.in이라는 InputStream을 넣어서 만든 인스턴스를 sc에 저장한 형태입니다.


그리고 Scanner객체는 java.util패키지 안에 있는 클래스이기 때문에 import를 사용해서 추가해줘야합니다.


여기서 Java와 다른점이 System.`in`입니다.


in은 Kotlin에서 사용하는 예약어라서 Java에서 사용하던 변수명을 ``으로 감싸서 사용하는 것입니다.


Scanner 객체에서 사용하는 주요 메소드들입니다.


 메소드

설명 

 next(): String!

 String 타입으로 리턴

 nextByte(): Byte

 Byte 타입으로 리턴

 nextShort(): Short

 Short 타입으로 리턴

 nextInt(): Int

 Int 타입으로 리턴

 nextLong(): Long

 Long 타입으로 리턴

 nextFloat(): Float

 Float 타입으로 리턴

 nextDouble(): Double

 Double 타입으로 리턴

 nextLine(): String!

 '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지 문자열을 String  타입으로 리턴

지금 String뒤에 !에 대해서 몰라도 상관없습니다. 이 부분은 나중에 다루겠습니다.


간단한 예제로 이름과 나이를 입력받고 콘솔에 출력해주는 코드를 작성해 보겠습니다.


fun main(args: Array<String>){
val sc: Scanner = Scanner(System.`in`)

val name = sc.nextLine()
val age = sc.nextInt()

println("name: $name, age: $age")

}

name을 nextLine으로 문자열을 입력받고 age를 nextInt로 정수를 입력받습니다.

그리고 println함수를 사용해 name과 age를 출력합니다. 


위는 결과 화면입니다.

출처 : https://googry.tistory.com/7?category=749066