웹사이트 검색

Kotlin print(), println(), readLine(), 스캐너, REPL


오늘 우리는 Kotlin 인쇄 기능을 사용하는 방법과 콘솔에서 사용자 입력을 가져오고 파싱하는 방법을 배웁니다. 또한 Kotlin REPL을 살펴보겠습니다.

Kotlin 인쇄 기능

화면에 무언가를 출력하기 위해 다음 두 가지 방법이 사용됩니다.

    <리>프린트()\n
  • println()

print 문은 그 안의 모든 것을 화면에 출력합니다. println 문은 출력 끝에 개행을 추가합니다. 인쇄 문은 내부적으로 System.out.print를 호출합니다. 다음 코드는 실행 중인 인쇄 문을 보여줍니다.

fun main(args: Array<String>) {
var x = 5
print(x++)
println("Hello World")
print("Do dinasours still exist?\n")
print(false)
print("\nx is $x.")
println(" x Got Updated!!")
print("Is x equal to 6?: ${x == 6}\n")    
}

이스케이프 리터럴 및 식

달러 기호를 이스케이프하고 &#36 {expression} 을 계산하지 않고 문자열로만 취급한다고 가정해 봅시다. 이스케이프할 수 있습니다.

fun main(args: Array<String>) {
val y = "\${2 == 5}"
println("y = ${y}")       
println("Do we use $ to get variables in Python or PHP? Example: ${'$'}x and ${'$'}y")
val z = 5
var str = "$z"
println("z is $str")
str = "\$z"
println("str is $str")
}

함수 값 인쇄

fun sumOfTwo(a: Int, b: Int) : Int{
    return a + b
}

fun main(args: Array<String>) {
val a = 2
val b = 3
println("Value of ${'$'}a and ${'$'}b is : ${sumOfTwo(a,b)}") 
println(println("Printing Value of ${'$'}a and ${'$'}b is : ${sumOfTwo(a,b)}"))    
}

Kotlin 사용자 입력

사용자 입력을 얻기 위해 다음 두 가지 방법을 사용할 수 있습니다.

  • readLine()
  • 스캐너 클래스

참고: 사용자 입력에는 명령줄 도구가 필요합니다. REPL 또는 IntelliJ를 사용할 수 있습니다. 여기서 IntelliJ를 사용합시다.

readLine() 사용

readLine()은 String? 유형의 값을 반환합니다. 파일 끝 등을 읽을 때 발생할 수 있는 null 값을 처리하기 위해 다음 코드는 readLine()을 사용하는 예를 보여줍니다.

fun main(args: Array<String>) {
    println("Enter your name:")
    var name = readLine()
    print("Length is ${name?.length}")
}

보시다시피 속성에서 String 유형 함수를 사용하려면 nullable 유형을 래핑 해제해야 합니다. 를 사용하세요!! 문자열을 강제로 변환하려면? 값이 null이 아님을 절대적으로 확신하는 경우에만 문자열로 변환합니다. 그렇지 않으면 충돌합니다. 입력을 Integer로 변환 입력 String을 Int로 변환하려면 다음을 수행합니다.

fun main(args: Array<String>) {
var number = readLine()
try {
        println("Number multiply by 5 is ${number?.toInt()?.times(5)}")
    } catch (ex: NumberFormatException) {
        println("Number not valid")
    }
}

다시 우리는 ?. 연산자를 사용하여 toInt()를 사용하여 nullable 유형을 먼저 Int로 변환합니다. 그런 다음 5를 곱합니다. 연속적으로 입력 읽기 아래와 같이 입력을 연속적으로 읽기 위해 do while 루프를 사용할 수 있습니다.

    do {
        line = readLine()

        if (line == "quit") {
            println("Closing Program")
            break
        }

        println("Echo $line")

    } while (true)
}

분할 연산자를 사용하여 여러 값 읽기

구분 기호로 구분된 여러 값을 읽고 아래와 같이 튜플 형식으로 저장할 수 있습니다.

fun readIntegers(separator: Char = ',')
        = readLine()!!.split(separator).map(String::toInt)

fun main(args: Array<String>) {
    println("Enter your values:")
    try {
        val (a, b, c) = readLine()!!.split(' ')
        println("Values are $a $b and $c")
    } catch (ex: IndexOutOfBoundsException) {
        println("Invalid. Missing values")
    }

    try {
        val (x, y, z) = readIntegers()
        println("x is $x y is $y z is $z")
    } catch (ex: IndexOutOfBoundsException) {
        println("Invalid. Missing values")
    }
    catch (ex: NumberFormatException) {
        println("Number not valid")
    }

}
val ints: List<String>? = readLine()?.split("|".toRegex())
println(ints)

Kotlin 스캐너 클래스

입력을 받으려면 표준 입력 키보드에서 입력을 받는 Scanner(System."in")를 사용할 수 있습니다. 다음 코드는 동일한 내용을 보여줍니다.

fun main(args: Array<String>) {
    val reader = Scanner(System.`in`)
    print("Enter a number: ")

    // nextInt() reads the next integer. next() reads the String
    var integer:Int = reader.nextInt()

    println("You entered: $integer")

reader.nextInt()는 다음 정수를 읽습니다. reader.next()는 다음 문자열을 읽습니다. reader.nextFloat()는 다음 플로트 등을 읽습니다. reader.nextLine()은 스캐너를 nextLine으로 전달하고 버퍼도 지웁니다. 다음 코드는 print 문 내에서 다양한 유형의 입력을 직접 읽는 방법을 보여줍니다.

import java.util.*

fun main(args: Array<String>) {

    val reader = Scanner(System.`in`)
    print("Enter a number: ")

    try {
        var integer: Int = reader.nextInt()
        println("You entered: $integer")
    } catch (ex: InputMismatchException) {
        println("Enter valid number")
    }
    enterValues(reader)
    //move scanner to next line else the buffered input would be read for the next here only.
    reader.nextLine()
    enterValues(reader)
}

fun enterValues(reader: Scanner) {
    println("Enter a float/boolean :")
    try {
        print("Values: ${reader.nextFloat()}, ${reader.nextBoolean()}")
    } catch (ex: InputMismatchException) {
        println("First value should be a float, second should be a boolean. (Separated by enter key)")
    }
}

코틀린 REPL

Read-Eval-Print-Loop라고도 하는 REPL은 대화형 셸에서 코드의 일부를 직접 실행하는 데 사용됩니다. Kotlin 컴파일러를 시작하여 터미널/명령줄에서 그렇게 할 수 있습니다.

명령줄 컴파일러 설치

여기에 설명된 대로 Mac/Windows/Ubuntu에 명령줄 컴파일러를 설치할 수 있습니다. 일반적으로 Mac에서는 터미널에서 HomeBrew를 사용하여 kotlin 컴파일러를 설치할 수 있습니다.

brew update
brew install kotlin