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

Kotlin类型不匹配错误:传入String类型却期望Int类型

解决Kotlin类型不匹配:String转Int的问题

问题分析

嘿,我来帮你搞定这个报错!你这段代码的核心问题很直白:你用readLine()!!读取的用户输入是String字符串类型,但你调用的division函数要求传入的是Int整数类型参数,编译器一眼就识破了这个类型不匹配的问题,所以抛出了那两行错误提示。

先还原下你出错的代码:

fun main(args:Array<String>) { 
    println("Enter values of c and d") 
    var c:String= readLine()!! 
    var d:String= readLine()!! 
    try { 
        division(c,d) // 这里传入String,函数要求Int,类型不匹配
    } catch (e:Exception) { 
        println("Exception Occured") 
        e.printStackTrace() 
    } 
} 
fun division(a:Int,b:Int){ 
    println(a/b) 
}

对应的错误提示:

Error:(6, 17) Kotlin: 类型不匹配:推断类型为String,但期望的是Int
Error:(6, 19) Kotlin: 类型不匹配:推断类型为String,但期望的是Int

两种解决思路

你只需要把读取到的String类型输入转换为Int类型就行,这里给你两种常用的处理方式:

1. 直接强制转换(简单但依赖输入合法性)

如果你确定用户输入的肯定是合法整数,可以用toInt()方法直接转换。虽然你的代码已经有try-catch块能捕获转换失败的异常,但可以优化下错误提示更友好:

fun main(args:Array<String>) { 
    println("Enter values of c and d") 
    var c:String= readLine()!! 
    var d:String= readLine()!! 
    try { 
        // 把String转成Int再传入函数
        division(c.toInt(), d.toInt()) 
    } catch (e:Exception) { 
        println("Exception Occured: ${e.message}") // 打印具体错误信息
        e.printStackTrace() 
    } 
} 
fun division(a:Int,b:Int){ 
    println(a/b) 
}

2. 安全转换(推荐,适配无效输入)

如果想避免用户输入非整数导致的崩溃,建议用toIntOrNull()方法——它在转换失败时会返回null,这样你可以提前拦截无效输入:

fun main(args:Array<String>) { 
    println("Enter values of c and d") 
    val c = readLine()?.toIntOrNull()
    val d = readLine()?.toIntOrNull()

    // 先判断输入是否为有效整数
    if (c == null || d == null) {
        println("请输入有效的整数!")
        return
    }

    try { 
        division(c, d) 
    } catch (e: ArithmeticException) { // 单独捕获除零错误,更精准
        println("不能除以零!")
        e.printStackTrace() 
    } catch (e:Exception) { 
        println("发生未知错误: ${e.message}")
        e.printStackTrace() 
    } 
} 
fun division(a:Int,b:Int){ 
    println(a/b) 
}

这种方式更健壮,既能处理用户输入非整数的情况,还能针对性捕获除零的算术异常,用户体验会好很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:56