簡體   English   中英

您如何解決 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM