如何在Kotlin中实现三角格式输入?代码修改求助
问题:实现三角格式的输入接收功能
现有Kotlin代码如下,当前输入逻辑允许每行输入任意数量的数字,但需要修改为三角格式输入:第1行输入1个数字,第2行输入2个数字,……,第x行输入x个数字。
原代码:
fun main(){ val n = readLine()!!.toInt() repeat(n) { val x = readLine()!!.toInt() val inputs = (1..x).map { readLine()!!.split(" ").map { it.toInt() } } var sum = 0 for (row in inputs){ for (column in row){ sum+=column } } println(sum/2) } }
例如当x=3时,期望输入格式为:
2 4 5 2 5 8
修改后的代码
我们可以在读取每行输入时,根据当前行号校验输入的数字数量是否符合要求,同时简化原有求和逻辑:
fun main() { val n = readLine()!!.toInt() repeat(n) { val x = readLine()!!.toInt() val inputs = (1..x).map { rowNum -> // 处理输入中的空字符串(如首尾空格、连续空格),转换为整数列表 val row = readLine()!!.split(" ").filter { it.isNotEmpty() }.map { it.toInt() } // 强制校验每行数字数量与行号一致,不符合则抛出明确错误 require(row.size == rowNum) { "第$rowNum行必须输入$rowNum个数字" } row } // 用标准库方法简化求和逻辑 val sum = inputs.sumOf { it.sum() } println(sum / 2) } }
修改说明
- 新增
rowNum参数,明确当前行需要的数字数量 - 添加
filter { it.isNotEmpty() }处理输入中可能存在的无效空格 - 加入
require校验,确保输入严格符合三角格式,避免非法输入导致逻辑错误 - 使用Kotlin标准库的
sumOf简化嵌套循环的求和逻辑,代码更简洁直观
内容的提问来源于stack exchange,提问作者Saneer Sha
相关产品推荐
相关产品推荐

