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
相关产品推荐
相关产品推荐

