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

Kotlin单行实现控制台读取整数转Array<Int>能否更精简?

在竞赛编程场景下,确实可以把这段Kotlin代码精简不少!咱们一步步来优化:

首先看你原来的代码:

val na: Array<Int> = readLine()!!.split(' ').map{it.toInt()}.toTypedArray()

可以通过这几个点来精简:

  • 去掉显式类型声明:Kotlin的类型推断足够聪明,能自动识别右边表达式返回的是Array<Int>,所以可以删掉: Array<Int>。
  • 用readln()替代readLine()!!:Kotlin 1.6+新增了readln()函数,它直接返回非空的字符串(输入为空时会抛出异常,这在竞赛场景下完全没问题,因为输入都是符合要求的),省去了烦人的非空断言!!。
  • 替换lambda为方法引用:map{it.toInt()}可以简化成map(String::toInt),字符数更少,代码更简洁。
  • 简化split参数:无参数的split()会默认分割所有空白字符(包括多个空格、制表符等),比指定' '更灵活,还能适配竞赛中常见的多空格分隔输入,同时代码更短。

优化后的最精简版本(针对Array<Int>):

val na = readln().split().map(String::toInt).toTypedArray()

如果竞赛中允许使用List<Int>而非Array<Int>(大部分场景下List完全够用,比如遍历、随机访问等),还能再省掉toTypedArray(),变成:

val na = readln().split().map(String::toInt)

虽然还是比Python的一行代码长一点,但这已经是Kotlin静态类型特性下能做到的最精简写法了——毕竟Kotlin需要明确完成类型转换和集合类型的转换,而Python是动态类型语言,语法上天生更简洁~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:00:21