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

Kotlin中能否通过数组获取用户输入?求更多实现方案

Kotlin中收集用户输入的多种实现方法

当然可以用数组直接收集用户输入,除了你已经实现的ArrayList方式,这里提供几种不同风格的实现方案:

1. 使用固定大小的Array(原生数组)

如果提前知道输入数量,直接创建指定大小的Array来存储输入,逻辑和你原有代码类似,但直接用数组而非集合:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    println("Enter the number of inputs: ")
    val inputCount = scanner.nextInt()
    
    // 创建指定大小的Int数组
    val inputArray = Array(inputCount) { 0 }
    
    for (i in 0 until inputCount) {
        print("Enter input ${i + 1}: ")
        inputArray[i] = scanner.nextInt()
    }
    
    println("The array is: ${inputArray.contentToString()}")
}

这里用Array(inputCount) { 0 }初始化数组,循环时直接通过索引赋值,最后用contentToString()打印数组(Kotlin数组直接用toString()无法得到友好输出)。

2. 用Kotlin标准库的buildList简化ArrayList实现

你原来的ArrayList写法可以用buildList简化,无需手动调用add,代码更简洁:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    println("Enter the number of inputs: ")
    val inputCount = scanner.nextInt()
    
    val inputList = buildList<Int> {
        repeat(inputCount) { index ->
            print("Enter input ${index + 1}: ")
            add(scanner.nextInt())
        }
    }
    
    println("The list is: $inputList")
}

buildList是Kotlin提供的构建只读List的便捷函数,内部自动管理集合,配合repeat替代for循环,更符合Kotlin的简洁风格。

3. 函数式风格:用generateSequence生成输入序列

如果偏好函数式编程,可以用generateSequence不断生成输入,再取前n个元素转成集合或数组:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    println("Enter the number of inputs: ")
    val inputCount = scanner.nextInt()
    
    // 生成输入序列,取前inputCount个元素
    val inputList = generateSequence {
        print("Enter next input: ")
        scanner.nextInt()
    }.take(inputCount).toList()
    
    println("The list is: $inputList")
    // 如果需要数组,直接转成Array:.toTypedArray()
}

这种写法无需手动管理循环,用序列处理输入,适合函数式编程场景。

对你原有代码的小优化

你的原有代码可以做细节优化,比如变量命名更清晰,去掉多余的变量声明:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    println("Enter an number of input: ")
    val n = scanner.nextInt()
    val inputList = ArrayList<Int>()
    
    for (i in 1..n) {
        print("enter an input of $i :")
        inputList.add(scanner.nextInt())
    }
    
    println("the list is:$inputList")
}

这里把n1改成scanner更易读,去掉了提前声明的var i=0,因为for循环里的i会自动创建作用域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:31:16