![](/img/trans.png)
[英]How can i solve error unexpected tokens (use ';' to separate expressions on the same line) in kotlin?
[英]How can you solve an input in the same line problen in Kotlin?
我在 Kotlin 中的控制台應用程序有問題。 該程序在同一行中讀取兩個變量。 如果我沒記錯的話,這只能用 readLine()...split(" ") 來完成。問題是下一個,它需要 2 個輸入。 僅提供一個輸入時。 由於未輸入第二個變量,程序因越界而崩潰。 在任務中,程序必須以輸入 /exit 退出。 我不知道該怎么做。 為第二個輸入輸入空格不是一個選項,因為測試不接受它。 提前致謝。
按格式輸入兩個數字:{source base} {target base}(退出類型/exit)> 36 10 輸入base 36 中的數字以轉換為base 10(To go 返回類型/back)> abcde 轉換結果:17325410
按格式輸入兩個數字:{source base} {target base}(退出輸入 /exit)> /exit
我不會回答你所說的整個問題,而只是解決你的OutOfBoundException
,因為這對我來說看起來像是一個家庭作業問題。
如果您不介意為/exit
以外的輸入拋出OutOfBoundException
,則以下內容可能對您有用。
val line = readln().trim()
if (line == "/exit") {
// exit, e.g. through System.exit(0) or other means
} else {
val bases = line
.split(" ")
.map { it.toInt() }
val (sourceBase, targetBase) = bases
// carry on with your program ...
}
在拆分輸入並將其轉換為數字之前,您可能希望顯式驗證/exit
以外的輸入。
在這個簡單的案例中,您可以使用正則表達式來驗證用戶輸入。 以下內容可能對您有用。
require(line.matches("""^\d+ \d+$""".toRegex())) {
"You must enter two integer numbers delimited by a single space character!"
}
如果你還沒有接觸過正則表達式(regex),我會為你分解上面的內容:
^
- 從行首開始驗證\d
- 匹配任何數字
+
- 匹配前一個標記(任何數字)一次到無限次,盡可能多次
- 從字面上匹配空白字符\d
- 匹配任何數字
+
- 匹配前一個標記(任何數字)一次到無限次,盡可能多次$
- 驗證到行尾我有意識地省略了任何控制流結構,因為它們與OutOfBoundException
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.