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

报错'Expecting member declaration',Kotlin代码执行问题求助

解决Kotlin中'Expecting member declaration'报错问题

报错原因

Kotlin类的直接成员区域只能声明属性、函数、初始化块这类成员,不能直接放置可执行语句。你把println(Calculate(...))直接写在MainActivity类的顶层成员位置,违反了语法规则,导致触发该报错。

修正方案

方案1:将执行代码放入Activity的onCreate方法

因为MainActivity继承自ComponentActivity,安卓Activity的核心逻辑通常放在onCreate生命周期方法中:

class MainActivity : ComponentActivity() {
    var item = "None"
    var price: Double = 16.99
    var quantity: Int = 2 // 遵循Kotlin命名惯例:变量名用小驼峰

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        println(calculate(price, item, quantity)) // 调用修正后的函数
    }
}

// 遵循Kotlin命名惯例:函数名用小驼峰
fun calculate(price: Double, item: String, quantity: Int): Double {
    return quantity * price
}

方案2:使用初始化块(init block)

如果不需要依赖Activity生命周期,仅需在类初始化时执行代码,可使用init块:

class MainActivity : ComponentActivity() {
    var item = "None"
    var price: Double = 16.99
    var quantity: Int = 2

    init {
        println(calculate(price, item, quantity))
    }
}

fun calculate(price: Double, item: String, quantity: Int): Double {
    return quantity * price
}

额外优化建议

  • 你的calculate函数中item参数未被使用,可考虑移除以避免冗余代码:
fun calculate(price: Double, quantity: Int): Double {
    return quantity * price
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:03:13