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

Kotlin中能否通过for循环创建数组?解决循环内列表外部无法使用及Excel读取问题

能否通过for循环创建数组/列表

完全可以。你提到的「列表定义在for循环内部就无法在外部调用」是Kotlin的变量作用域规则导致的:在{}包裹的代码块(比如for循环、if判断的花括号内部)中定义的变量属于该块的局部变量,仅在块内部生效,块外部无法访问。
你当前的写法已经规避了这个问题:你将listOfNames定义在了for循环的外层、函数作用域内,循环内部仅调用add方法向列表中追加元素,函数最终可以正常返回完整列表,完全匹配你「读取Excel内容存入列表、后续在main方法中调用」的需求。

现有代码可优化项

当前代码还有几个潜在问题可以调整,避免运行报错:

  • 硬编码遍历0-10行容易遇到空行、空单元格报错,建议读取工作表实际行数,增加空值判断
  • 文件流使用完需要关闭避免资源泄漏,可以用Kotlin的use函数自动管理资源
  • listOfNames后续不会重新赋值,把var改成val更符合Kotlin编码规范

优化后的完整方法参考:

fun readFromExcelFile(filepath: String): ArrayList<String> {
    // 不需要重新赋值改成val
    val listOfNames = ArrayList<String>()
    val columnNumber = 0

    // use函数会在逻辑执行完自动关闭输入流
    FileInputStream(filepath).use { inputStream ->
        val xlWb = WorkbookFactory.create(inputStream)
        val xlWs = xlWb.getSheetAt(0)
        // 读取工作表实际最大行数
        val lastRowNum = xlWs.lastRowNum
        for (i in 0..lastRowNum) {
            // 跳过空行、空单元格
            val currentRow = xlWs.getRow(i) ?: continue
            val currentCell = currentRow.getCell(columnNumber) ?: continue
            listOfNames.add(currentCell.stringCellValue)
        }
    }
    return listOfNames
}

main方法调用示例

fun main() {
    // 替换为你的Excel文件实际路径
    val excelFilePath = "/xxx/xxx/名单.xlsx"
    val nameList = readFromExcelFile(excelFilePath)
    // 此处可正常使用读取到的所有内容
    println("读取到的名称列表:$nameList")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:57:05