Kotlin如何传入整型数组作为参数并正确打印数组首元素
代码存在的问题
这段代码无法运行,是因为三处语法/规则不符合Kotlin要求:
- 作为程序入口的
main函数有固定签名,JVM平台下仅支持无参,或者参数为Array<String>(字符串数组,用来接收命令行输入参数)的形式,你把入口参数定义为Array<Int>本身就不符合规范。 - Kotlin没有提供方括号直接创建数组的语法,
[12,3,4,5]这种写法在Kotlin里无法通过编译,创建整型数组需要使用intArrayOf()、arrayOf<Int>()这类内置工厂函数。 - 就算你是想写一个自定义的、接收整型数组的普通函数(哪怕函数名也叫main),传参时的数组写法错误也会直接导致编译失败。
正确实现方式
写法1:完全贴合你原始代码思路
Kotlin支持函数重载,你可以保留名为main的自定义函数,只需要修正数组创建语法、区分开程序入口main即可:
// 你自定义的、接收整型数组的main函数,属于普通功能函数 fun main(args: IntArray) { println(args[0]) } // 无参的main是程序启动的固定入口,所有Kotlin程序启动都会从这里开始执行 fun main() { // Kotlin用intArrayOf创建整型数组,替代你原来写的[12,3,4,5] main(intArrayOf(12, 3, 4, 5)) }
运行这段代码会直接输出12,完全符合你要的效果。
写法2:通过命令行参数传值
如果你是想在程序启动时通过命令行传入数字参数,就要遵守入口main函数的参数规则,把传入的字符串参数转成整型即可:
// 入口main的参数固定是字符串数组类型,不能修改为Int数组 fun main(args: Array<String>) { // 取出第一个传入的参数,转为Int后打印 println(args[0].toInt()) }
启动程序时在命令行拼接参数即可,比如执行java -jar 你的程序包.jar 12 3 4 5,同样会输出第一个数字12。
内容的提问来源于stack exchange,提问作者Khant
相关产品推荐
相关产品推荐

