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

如何查找序列的最大值及解决Kotlin输入循环代码的编译报错问题

错误原因

你收到的两个类型不匹配报错均是混淆了Scanner类的方法作用导致的,另外原有代码还存在死循环问题:

  • scanner.hasNextInt()返回值为Boolean类型,仅用于判断输入流中是否存在下一个可读取的整数,不会读取输入的数字本身,将布尔值赋值给input后和整数比较、给整型变量赋值自然会触发类型不匹配错误。
  • 原有代码中仅在进入循环前读取了一次n的值,循环体内没有更新n的取值,只要首次输入不是0,就会永远陷入循环,即使后续输入0也无法终止。

修改后可运行代码

import java.util.*
fun main() {
    val scanner = Scanner(System.`in`)
    var maxNum = 0
    var input: Int
    while (scanner.hasNextInt()) {
        input = scanner.nextInt()
        // 输入为0时直接终止循环
        if (input == 0) break
        if (input > maxNum) {
            maxNum = input
        }
    }
    println(maxNum)
}

核心修改说明

  1. 循环内调用scanner.nextInt()读取用户输入的整数值,避免类型不匹配问题
  2. 每次读取输入后优先判断是否为0,符合输入0终止循环的需求
  3. 每次将输入值和当前存储的最大值比较,更新最大值即可正常输出结果

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

相关产品推荐
方舟 Agent Plan

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

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