0

我正在尝试学习 kotlin,并且遇到了一个名为 klaxon 的用于解析 JSON 的库。如果我从输入中得到的值为空,我希望程序不断重复。否则,如果我输入的密钥确实存在,我希望程序中断。我的程序没有按我的预期工作,但如果我删除 break,即使值为 null,程序也会永远循环。

这是我的代码:

import java.net.*
import com.beust.klaxon.*
import java.util.*
import kotlin.text.*
 
fun webRequest(url: String) {
    val uri = URL(url).readText()
    val parser: Parser = Parser.default()
    val stringBuilder: StringBuilder = StringBuilder(uri)
    val json: JsonObject = parser.parse(stringBuilder) as JsonObject
 
    println(json)
    val input: String? = readLine()
    do {
        println(json)
        if (input == null) {
            println("value doesn't exist")
        } else {
            println(json.string(input))
            break
        }
    } while (true)
}
 
fun main() {
    webRequest("https://api.github.com")
}
4

1 回答 1

0

您只读取一次输入。您应该readline()在循环内执行以获得所需的行为:

var input: String? = readLine()
while (input.isNullOrEmpty()) {
    println("value doesn't exist")
    input = readLine()
}
println(json.string(input))
于 2020-12-26T20:07:04.910 回答