You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中readLine()多输入问题:实现多行输入与完整输出需求

解决多行输入与全输入打印问题

我来帮你搞定这个需求!先拆解下你原有代码的局限:

  • 只调用了一次readLine(),只能捕获单行输入
  • 固定解构为a,b,c,不仅字段数受限,还没法处理多行内容

下面是完全满足你需求的优化代码:支持多行输入,还能完整打印所有输入内容:

fun getTheData() {
    val allInputs = mutableListOf<String>()
    println("请输入内容(输入空行结束):")
    
    while (true) {
        val inputLine = readLine()
        // 输入空行(或程序收到终止信号)时结束输入
        if (inputLine.isNullOrBlank()) {
            break
        }
        allInputs.add(inputLine)
    }

    // 打印所有输入内容
    println("\n你输入的所有内容如下:")
    allInputs.forEachIndexed { index, line ->
        println("第${index+1}行:$line")
    }
}

代码说明:

  • 用mutableListOf<String>()存储每一行输入,不管用户输入多少行都能存下
  • while(true)循环持续读取输入,直到用户输入空行才停止
  • 最后用forEachIndexed带行号打印,内容展示更清晰

如果还想保留按空格拆分每行字段的功能,可以用这个版本:

fun getTheDataWithFields() {
    val allInputFields = mutableListOf<List<String>>()
    println("请输入内容(每行用空格分隔字段,输入空行结束):")
    
    while (true) {
        val inputLine = readLine()
        if (inputLine.isNullOrBlank()) {
            break
        }
        // 拆分字段并过滤连续空格产生的空字符串
        val fields = inputLine.split(" ").filter { it.isNotBlank() }
        if (fields.isEmpty()) {
            println("该行无有效内容,已跳过")
            continue
        }
        allInputFields.add(fields)
    }

    println("\n你输入的所有字段内容如下:")
    allInputFields.forEachIndexed { lineIndex, fields ->
        println("第${lineIndex+1}行的字段:${fields.joinToString(", ")}")
    }
}

额外优化细节:

  • 加入空内容判断,避免无效输入被存储
  • 处理连续空格的情况,不会产生空字段
  • 增加友好提示,让用户清楚操作逻辑

这样调整后,不管用户输入多少行、每行有多少字段,都能完整捕获并打印出来啦!

内容的提问来源于stack exchange,提问作者Usman sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:30:09