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

如何在Kotlin中创建支持运行时输入值的动态二维数组?

在Kotlin中实现动态输入的矩阵相加

下面是修改后的代码,支持运行时由用户输入矩阵的行列数和每个元素值,完成矩阵相加:

import java.util.Scanner

fun main() {
    val scanner = Scanner(System.`in`)
    
    // 读取矩阵的行数和列数
    print("请输入矩阵的行数: ")
    val rows = scanner.nextInt()
    print("请输入矩阵的列数: ")
    val columns = scanner.nextInt()
    
    // 读取第一个矩阵
    println("请输入第一个矩阵的元素(每行输入${columns}个整数,用空格分隔):")
    val firstMatrix = readMatrix(scanner, rows, columns)
    
    // 读取第二个矩阵
    println("请输入第二个矩阵的元素(每行输入${columns}个整数,用空格分隔):")
    val secondMatrix = readMatrix(scanner, rows, columns)
    
    // 计算两个矩阵的和
    val sum = Array(rows) { IntArray(columns) }
    for (i in 0..<rows) {
        for (j in 0..<columns) {
            sum[i][j] = firstMatrix[i][j] + secondMatrix[i][j]
        }
    }
    
    // 输出结果
    println("Sum of two matrices is: ")
    for (row in sum) {
        row.forEach { print("$it    ") }
        println()
    }
}

// 复用函数:读取用户输入生成指定行列的矩阵
fun readMatrix(scanner: Scanner, rows: Int, columns: Int): Array<IntArray> {
    val matrix = Array(rows) { IntArray(columns) }
    for (i in 0..<rows) {
        println("请输入第${i+1}行的元素:")
        for (j in 0..<columns) {
            matrix[i][j] = scanner.nextInt()
        }
    }
    return matrix
}

关键修改说明:

  • 使用Scanner处理用户输入,比手动转换字符串更便捷,适配整数输入场景。
  • 提取readMatrix复用函数,避免重复编写矩阵读取逻辑,让代码结构更清晰。
  • 替换原代码中固定的矩阵值,改为通过用户输入动态生成二维数组。
  • 使用Kotlin 1.7+支持的0..<rows语法(等价于0..rows-1),让循环范围更直观。

如果需要增强输入健壮性,可添加异常处理逻辑,比如捕获用户输入非整数的情况:

fun readInt(scanner: Scanner, prompt: String): Int {
    while (true) {
        print(prompt)
        try {
            return scanner.nextInt()
        } catch (e: InputMismatchException) {
            println("请输入有效的整数!")
            scanner.next() // 清除无效输入缓存
        }
    }
}

之后用这个函数替代scanner.nextInt()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:50:12