使用while循环生成重复数字序列,排查Kotlin代码输出异常问题
代码问题排查
存在以下核心错误:
- 起始值设置错误:
i初始值为0,导致输出从0开始,和要求的序列起始值1不符 - 内层循环计数未重置:变量
j仅初始化了1次,第一次内层循环结束后j的值会大于后续的i,导致每个数字只能打印1次,无法实现数字n重复n次的逻辑 - 终止条件错误:循环没有以已打印的元素数量作为终止判断依据,会出现打印数量超出输入值的问题
- 输出格式问题:直接拼接空格打印,会导致末尾出现多余空格
修复后代码
fun main() { val input = readLine()!!.toInt() var printedCount = 0 var currentNum = 1 while (printedCount < input) { var repeatCount = 0 while (repeatCount < currentNum && printedCount < input) { print(currentNum) printedCount++ repeatCount++ if (printedCount < input) { print(" ") } } currentNum++ } }
修改说明
- 将当前打印的数字初始值设置为1,匹配序列起始要求
- 每次外层循环重置重复次数计数器
repeatCount,保证每个数字可以打印对应次数 - 两层循环都增加已打印数量的判断,达到输入值时立刻终止,不会出现多打漏打的问题
- 增加空格打印的判断条件,仅在未打印到最后一个元素时输出空格,避免末尾多余空格
内容的提问来源于stack exchange,提问作者Dede Kurniawan
相关产品推荐
相关产品推荐

