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

Kotlin如何读取长度未定数字序列并输出最大值及首次出现位置

代码问题汇总
  • 仅在循环外读取了一次输入数字,循环内部没有调用scan.nextInt()读取新的数字,会导致一直重复比对同一个初始数值,后续输入完全没有被处理,还会触发死循环。
  • 循环判断条件使用scan.hasNext()不够严谨,你要读取的是Int类型数字,应该用scan.hasNextInt()判断,否则输入中出现非Int类型内容时,读取操作会直接抛出异常。
  • 没有处理空输入的边界场景:如果用户没有输入任何数字,初始的scan.nextInt()会直接抛出NoSuchElementException,最终输出的max也会是无意义的Int.MIN_VALUE。
修正后的代码
import java.util.Scanner

fun main() {
    val scan = Scanner(System.`in`)
    var max = Int.MIN_VALUE
    var pos = 0
    var i = 1

    // 每次循环前先判断是否还有Int输入
    while (scan.hasNextInt()) {
        val num = scan.nextInt()
        if (num > max) {
            max = num
            pos = i
        }
        i++
    }

    // 无有效输入的提示逻辑,可根据需求自行调整
    if (pos == 0) {
        println("未输入任何有效数字")
    } else {
        println("$max $pos")
    }
}
修正说明
  • 调整为while循环,每次进入循环前先判断是否还有整数输入,避免空输入报错。
  • 把数字读取逻辑放到循环内部,每次迭代都读取新的输入数值。
  • 增加空输入判断逻辑,避免输出无意义的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:07