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

C#中如何逐行输入数独棋盘并替换二维数组grd的值

快速逐行输入填充数独二维数组的方案

嘿,你已经搞定了单行输入的核心逻辑,现在只需要把这个逻辑循环9次,再把每行的结果填充到二维数组里就搞定啦!我给你两种实现方式,你可以根据自己的习惯选:

基础版(复用你原有的代码逻辑)

这个版本完全基于你已经写好的单行处理代码,只是加了循环和行填充的逻辑,还额外加了输入合法性校验和长度修正,避免出错:

// 初始化一个空的9x9数独棋盘(替换你原来的固定数组)
int[,] grd = new int[9, 9];

for (int row = 0; row < 9; row++)
{
    Console.WriteLine($"请输入第 {row + 1} 行的数值(用空格分隔,空单元格填0):");
    string unprocesed_nums = Console.ReadLine();
    string[] split_nums = unprocesed_nums.Split(' ');
    List<int> nums_list = new List<int>();
    int nums;
    
    foreach (string s in split_nums)
    {
        if (Int32.TryParse(s, out nums))
        {
            // 校验输入是否符合数独规则(0-9之间)
            if (nums >= 0 && nums <= 9)
            {
                nums_list.Add(nums);
            }
            else
            {
                Console.WriteLine($"忽略无效数值:{s},请输入0-9之间的数字");
            }
        }
        else
        {
            Console.WriteLine($"忽略无法解析的内容:{s}");
        }
    }
    
    // 确保每行刚好9个元素:不足补0,多余截断
    while (nums_list.Count < 9)
    {
        nums_list.Add(0);
    }
    if (nums_list.Count > 9)
    {
        nums_list = nums_list.GetRange(0, 9);
    }
    
    // 将处理后的行数据填充到二维数组对应位置
    for (int col = 0; col < 9; col++)
    {
        grd[row, col] = nums_list[col];
    }
}

简化版(用LINQ压缩代码)

如果你熟悉LINQ的话,可以把单行处理的逻辑简化成链式调用,代码会更紧凑易读:

using System.Linq; // 记得添加这个命名空间

// 初始化空棋盘
int[,] grd = new int[9, 9];

for (int row = 0; row < 9; row++)
{
    Console.WriteLine($"请输入第 {row + 1} 行的数值:");
    // 一行完成输入解析、过滤、校验
    var numsList = Console.ReadLine()
        .Split(' ')
        .Where(s => int.TryParse(s, out _)) // 只保留能转成int的字符串
        .Select(int.Parse)
        .Where(num => num >= 0 && num <= 9) // 只保留0-9的有效数字
        .ToList();
    
    // 修正行长度
    while (numsList.Count < 9) numsList.Add(0);
    if (numsList.Count > 9) numsList = numsList.Take(9).ToList();
    
    // 填充到二维数组
    for (int col = 0; col < 9; col++)
    {
        grd[row, col] = numsList[col];
    }
}

关键说明

  1. 循环9次对应数独的9行输入,每次循环处理一行数据
  2. 输入合法性校验能避免用户输入非数字或超出数独范围的数值
  3. 行长度修正确保最终每行都是9个元素,不会出现数组越界的问题
  4. 最后通过内层循环把一维数组的每个元素赋值到二维数组的[row, col]位置,完美替换你原来的固定数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:52