报错'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
相关产品推荐
相关产品推荐

