如何在C#二维数组中插入新值?10x10矩阵首行插入字符串问题
问题解决:在10x10矩阵第一行插入"HOUSE"
原代码的核心问题有两个:
- 你先给第一行位置赋值,但紧接着就用随机字符覆盖了,等于白操作
- 固定用
wordChars[1](也就是字母'O'),根本没按顺序插入"HOUSE"的每个字符
直接上修正后的代码:
Random rchar = new Random(); string word = "HOUSE"; char[] wordChars = word.ToCharArray(); char[,] arr = new char[10, 10]; var rowLength = arr.GetLength(0); var colLength = arr.GetLength(1); for (int x = 0; x < rowLength; x++) { for (int y = 0; y < colLength; y++) { // 第一行前5列放HOUSE,其余位置填随机字符 if (x == 0 && y < wordChars.Length) { arr[x, y] = wordChars[y]; } else { arr[x, y] = (char)(rchar.Next(65, 91)); } Console.Write(arr[x, y] + " "); } Console.WriteLine(); }
关键修改说明:
- 增加判断逻辑:遍历到第一行(
x==0)且列数在"HOUSE"长度范围内(前5列)时,依次填入H、O、U、S、E - 第一行剩余列、其他所有行的位置,统一填充随机大写字母
- 彻底避免了先赋值再被覆盖的错误
另外你提到用SetValue没生效,其实二维数组是支持这个方法的(比如arr.SetValue(wordChars[y], 0, y);),但原问题根本不是这个方法的问题,而是你的赋值逻辑被后续的随机字符覆盖了。
内容的提问来源于stack exchange,提问作者Dima
相关产品推荐
相关产品推荐

