Kotlin代码While循环未按预期运行无输出问题求助
问题原因
- 内层循环逻辑漏洞:当输入值大于9时,你通过逐次取余、除以10的方式计算各位和,但循环终止条件是
num > 9,当num被除到只剩个位数时循环直接停止,这最后一位数没有被计入sum变量中。比如输入123,循环结束后num剩余1,sum仅累加了2和3得到错误结果5,正确结果应为6。 - 语法错误:你贴出的代码外层
while(true)没有对应的闭合右大括号,运行时会直接报错,也会导致无输出的问题。
修复后的代码
fun main () { while(true) { println("\nWrite a positive number: ") var num = readLine()!!.toInt() var sum = 0 if (num > 9) { var temp = num // 循环条件调整为大于0,所有数位都会被计算 while (temp > 0) { var digit = temp % 10 sum = sum + digit temp = temp / 10 } println("\nDigit Sum: $sum") } else if (num in 1..9) { println("\nDigit Sum for the number $num is $num") } else { println("\nInvalid input, try again.") } } // 补全外层while循环的闭合括号 }
补充说明
- 上述代码使用临时变量
temp做计算,避免修改原始输入的num变量,方便后续其他逻辑调用原始输入值 - 如果需要兼容输入为0的合法场景,单独调整判断分支的规则即可
内容的提问来源于stack exchange,提问作者Francisco Engenheiro
相关产品推荐
相关产品推荐

