C#中如何通过Console.ReadLine()实现二维数组整行输入
C# 整行输入二维数组实现方案
核心思路
摒弃逐个读取单元素的方式,改为按以下逻辑实现:
- 先读取一行输入,解析出二维数组的行数和列数
- 逐行读取每行的元素集合,用空格分割后转换为整数,填充到对应数组位置
基础实现代码(逐行输入)
// 读取行列数:示例输入 "2 2" string[] dims = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); int m = int.Parse(dims[0]); int n = int.Parse(dims[1]); int[,] arr = new int[m, n]; for (int i = 0; i < m; i++) { // 读取当前行元素:示例输入 "10 20" 或 "30 40" string[] rowValues = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < n; j++) { arr[i, j] = int.Parse(rowValues[j]); } }
兼容逗号分隔整段输入的实现
如果需要支持一次性输入所有内容(比如示例格式 "2 2,10 20,30 40"),可以用逗号先拆分出行数据:
// 一次性读取全部输入:示例输入 "2 2,10 20,30 40" string allInput = Console.ReadLine(); string[] parts = allInput.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries); // 解析行列数 string[] dims = parts[0].Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); int m = int.Parse(dims[0]); int n = int.Parse(dims[1]); int[,] arr = new int[m, n]; // 解析每行元素 for (int i = 0; i < m; i++) { string[] rowValues = parts[i+1].Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); for (int j = 0; j < n; j++) { arr[i, j] = int.Parse(rowValues[j]); } }
实用提示
实际开发中建议添加异常处理,比如捕获FormatException(输入非有效数字)、IndexOutOfRangeException(输入元素数量与数组维度不匹配)等,避免程序因非法输入直接崩溃。
内容的提问来源于stack exchange,提问作者Imtiyaz Ratul
相关产品推荐
相关产品推荐

