如何在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
相关产品推荐
相关产品推荐

