跳到主要内容

Read standard input

使用 readln() 函数从标准输入读取数据。它将整行读取为字符串:

// 读取用户输入并将其存储在变量中。例如:Hi there!
val myInput = readln()

println(myInput)
// Hi there!

// 读取并打印用户输入,而不将其存储在变量中。例如:Hi, Kotlin!
println(readln())
// Hi, Kotlin!

要处理字符串以外的数据类型,可以使用转换函数(如 .toInt().toLong().toDouble().toFloat().toBoolean())转换输入。可以读取不同数据类型的多个输入,并将每个输入存储在变量中:

// 将输入从字符串转换为整数值。例如:12
val myNumber = readln().toInt()
println(myNumber)
// 12

// 将输入从字符串转换为双精度浮点数值。例如:345
val myDouble = readln().toDouble()
println(myDouble)
// 345.0

// 将输入从字符串转换为布尔值。例如:true
val myBoolean = readln().toBoolean()
println(myBoolean)
// true

这些转换函数假设用户输入的是目标数据类型的有效表示形式。例如,使用 .toInt() 将 "hello" 转换为整数会导致异常,因为该函数期望字符串输入中包含数字。

要读取由分隔符分隔的多个输入元素,请使用 .split() 函数并指定分隔符。以下代码示例从标准输入读取数据,根据分隔符将输入拆分为元素列表,并将列表的每个元素转换为特定类型:

// 读取输入,假设元素由空格分隔,并将它们转换为整数。例如:1 2 3
val numbers = readln().split(' ').map { it.toInt() }
println(numbers)
//[1, 2, 3]

// 读取输入,假设元素由逗号分隔,并将它们转换为双精度浮点数。例如:4,5,6
val doubles = readln().split(',').map { it.toDouble() }
println(doubles)
//[4.0, 5.0, 6.0]
备注

有关在 Kotlin/JVM 中读取用户输入的另一种方法,请参阅 Standard input with Java Scanner

安全地处理标准输入

可以使用 .toIntOrNull() 函数安全地将用户输入从字符串转换为整数。如果转换成功,此函数将返回一个整数。但是,如果输入不是整数的有效表示形式,则返回 null

// 如果输入无效,则返回 null。例如:Hello!
val wrongInt = readln().toIntOrNull()
println(wrongInt)
// null

// 将有效的输入从字符串转换为整数。例如:13
val correctInt = readln().toIntOrNull()
println(correctInt)
// 13

readlnOrNull() 函数也有助于安全地处理用户输入。 readlnOrNull() 函数从标准输入读取数据,如果到达输入的末尾则返回 null,而 readln() 在这种情况下会抛出异常。