今天我们将学习如何使用 Kotlin 打印函数以及如何从控制台获取和解析用户输入。此外,我们将深入研究 Kotlin REPL。
Kotlin 打印函数
要在屏幕上输出内容,使用以下两种方法:
- print()
- println()
print 语句会将其内部的所有内容打印到屏幕上。println 语句会在输出末尾附加一个换行符。print 语句内部调用了 System.out.print。以下代码展示了 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")
}
要在 print 语句中打印变量,我们需要使用美元符号($),后跟在双引号字符串文字内的 var/val 名称。要打印表达式的结果,我们使用 ${ //expression goes here }
。在 Kotlin 在线编译器上运行上述代码时的输出如下所示。
转义字面量和表达式
要转义美元符号,让 ${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)}"))
}
打印以下输出: 注意:在另一个内部传递打印的行为类似递归。最内部的先打印。打印语句返回一个
Unit
(在Java中相当于void)。
Kotlin 用户输入
要获取用户输入,可以使用以下两种方法:
- readLine()
- Scanner 类
注意:用户输入需要一个命令行工具。您可以使用REPL或IntelliJ。让我们在这里使用IntelliJ。
使用 readLine()
readLine()
返回 String 类型的值吗?为了处理在读取文件末尾等情况下可能发生的空值,以下代码展示了使用 readLine()
的示例
fun main(args: Array<String>) {
println("Enter your name:")
var name = readLine()
print("Length is ${name?.length}")
}
正如您所看到的,我们需要解包可空类型,以便在属性上使用 String 类型的函数。只有在您绝对确定该值不会为 null 时,才使用 !! 强制将 String? 转换为 String,否则它将导致崩溃。将输入转换为整数要将输入的字符串转换为整数,我们执行以下操作:
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()
。然后我们将其乘以 5。连续读取输入我们可以使用 do while 循环来连续读取输入,如下所示。
do {
line = readLine()
if (line == "quit") {
println("Closing Program")
break
}
println("Echo $line")
} while (true)
}
上述代码在 IntelliJ 命令行中的输出如下所示。
使用分隔符读取多个值
我们可以通过分隔符分隔的方式读取多个值,并将它们保存为元组形式,如下所示。
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")
}
}
split
函数接受作为分隔符的字符。readIntegers()
函数使用 split 进行映射,将每个值转换为 Int。如果输入的值少于元组中指定的值,将会出现 IndexOutOfBoundsException。我们在两个输入中都使用了 try-catch。输出如下所示: 或者,我们也可以使用列表,如下所示。
val ints: List<String>? = readLine()?.split("|".toRegex())
println(ints)
Kotlin Scanner 类
要接收输入,我们可以使用 Scanner(System.`in`)
,它从标准输入键盘接收输入。以下代码演示了相同的操作:
fun main(args: Array) {
val reader = Scanner(System.`in`)
print("Enter a number: ")
// nextInt() 读取下一个整数。next() 读取字符串
var integer:Int = reader.nextInt()
println("You entered: $integer")
reader.nextInt()
读取下一个整数。 reader.next()
读取下一个字符串。reader.nextFloat() 读取下一个浮点数,依此类推。 reader.nextLine()
将 Scanner 传递给 nextLine,并清除缓冲区。以下代码演示了直接在打印语句中读取不同类型的输入。
import java.util.*
fun main(args: Array) {
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)
// 将扫描器移到下一行,否则缓冲输入将在下一个地方被读取。
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)")
}
}
当输入的类型与所要求的类型不同时,将抛出 InputMismatchException。输出如下所示。
Kotlin REPL
REPL(Read-Eval-Print-Loop)也称为读取-求值-输出-循环,用于直接在交互式 shell 中运行代码的一部分。我们可以通过启动 Kotlin 编译器在我们的终端/命令行中这样做。
安装命令行编译器
我们可以在 Mac/Windows/Ubuntu 上安装命令行编译器,如此处所示。通常,在 Mac 上,我们可以在终端上使用 HomeBrew 安装 Kotlin 编译器。
brew update
brew install kotlin
安装完成后,通过在终端/cmd 中输入 kotlinc
来启动 REPL。以下是我在 REPL 中的第一段代码。 关于 Kotlin 打印函数和 Kotlin REPL 的快速介绍就是这些了。
Source:
https://www.digitalocean.com/community/tutorials/kotlin-print-println-readline-scanner-repl