今天我們將學習如何使用 Kotlin 的打印函數以及如何從控制台獲取和解析用戶輸入。此外,我們還將深入研究 Kotlin REPL。
Kotlin 打印函數
要在屏幕上輸出內容,使用以下兩種方法:
- print()
- 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")
}
要在打印語句中打印變量,我們需要在雙引號字符串文字內使用美元符號($),後跟變量名稱。要打印表達式的結果,我們使用 ${ //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 類型的函數。只有當您絕對確定值不會為空時,才使用 !! 將 String? 強制轉換為 String。否則它會導致崩潰。將輸入轉換為整數 要將輸入的 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")
}
}
再次使用 ?.
運算符將可為空的類型轉換為 Int,首先使用 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()
函數使用在分割上的映射,將每個值轉換為整數。 如果輸入值少於元組中指定的值,則會出現 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,並且還清除緩衝區。 以下代碼演示了在 print 陳述中直接讀取不同類型的輸入。
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