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

如何在C#中将字符串转换为指定规格的二维字符数组?

固定5列二维字符数组的创建与填充解决方案

需求说明

需要创建一个固定5列、n行的二维字符数组:

  • n为字符串长度除以5后向上取整的结果(用Math.Ceiling计算)
  • 字符串字符按从左到右、从上到下的顺序填充,空格视为有效字符
  • 数组剩余空位用'X'填充

示例:输入字符串"DELICIOUS FOOD "时,数组输出为:

D E L I C
I O U S 
F O O D X

现有问题分析

你的代码存在两个核心问题:

  1. Math.Ceiling计算错误:customer.Length / 5是整数除法,会直接截断小数部分,导致Math.Ceiling无法正确向上取整
  2. 二维数组声明语法错误:char[Convert.ToInt32(nRows)][5]是交错数组的写法,而我们需要的是矩形二维数组

分步解决

1. 正确计算行数n

将字符串长度转换为double后再做除法,确保保留小数部分,再通过Math.Ceiling向上取整,最后转为int类型:

int rowCount = (int)Math.Ceiling((double)customer.Length / 5);

2. 正确声明二维数组

C#中矩形二维数组的声明格式为char[,] 数组名 = new char[行数, 列数];,这里列数固定为5:

char[,] table = new char[rowCount, 5];

3. 填充数组逻辑

遍历数组的每个位置,计算对应的字符串索引:

  • 若索引在字符串长度范围内,填入对应字符
  • 若超出范围,填入'X'

填充顺序对应索引公式:当前索引 = 行号 * 5 + 列号

完整代码

internal class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine("Enter Customer name: ");
        string customer = Console.ReadLine() ?? string.Empty; // 处理输入为null的情况
        
        // 计算需要的行数
        int rowCount = (int)Math.Ceiling((double)customer.Length / 5);
        // 创建固定5列的二维字符数组
        char[,] table = new char[rowCount, 5];

        // 填充数组
        for (int i = 0; i < rowCount; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                int charIndex = i * 5 + j;
                if (charIndex < customer.Length)
                {
                    table[i, j] = customer[charIndex];
                }
                else
                {
                    table[i, j] = 'X';
                }
            }
        }

        // 打印数组(按示例格式输出)
        for (int i = 0; i < rowCount; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                Console.Write(table[i, j]);
                if (j < 4) Console.Write(" "); // 列之间加空格,最后一列不加
            }
            Console.WriteLine();
        }
    }
}

代码说明

  • 加入?? string.Empty处理用户输入为空的情况,避免NullReferenceException
  • 填充逻辑严格按照需求的顺序,确保字符正确映射
  • 打印部分模拟示例的格式,列之间用空格分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:42:51