C#实现用户指定行列尺寸并填充随机数的二维数组代码求助
帮你搞定二维数组随机填充的问题
嘿,刚入门编程踩这些坑太正常了,我来帮你把代码里的问题捋清楚,再给你一个能跑的版本~
首先,咱先拆解下你当前代码里的几个核心问题:
- 行列数的定义完全错了:你用
char row = 'i';这种方式,'i'是字符,对应的ASCII码是105,这根本不是你要让用户输入的行列数,而且你完全没做“让用户输入行列数”的逻辑! - 二维数组的遍历条件不对:
twoDarray.Length是数组里所有元素的总数,遍历行应该用twoDarray.GetLength(0)(获取行数),遍历列用twoDarray.GetLength(1)(获取列数),不然循环会直接超出数组索引范围,报错。 - 逻辑搞反了:你需求是用随机数填充,但代码里写的是
Convert.ToInt32(In.ReadLine())——这是读取用户输入,而且In应该是Console才对。
接下来是修正后的完整代码,我加了注释方便你理解:
// 先让用户输入行数 Console.WriteLine("请输入二维数组的行数:"); // 读取输入并转换为整数,这里先做基础版,进阶可以加输入验证 int row = int.Parse(Console.ReadLine()); // 再让用户输入列数 Console.WriteLine("请输入二维数组的列数:"); int column = int.Parse(Console.ReadLine()); // 创建对应大小的二维数组 int[,] twoDarray = new int[row, column]; // 定义随机数的范围 int min = 0; int max = 100; Random randNum = new Random(); // 遍历每一行 for (int i = 0; i < twoDarray.GetLength(0); i++) { // 遍历当前行的每一列 for (int j = 0; j < twoDarray.GetLength(1); j++) { // 生成[min, max]范围内的随机数并赋值给数组元素 twoDarray[i, j] = randNum.Next(min, max + 1); // 可选:打印每个元素,验证结果 Console.Write(twoDarray[i, j] + "\t"); } Console.WriteLine(); // 每一行结束换行 }
简单说下代码的执行流程:
- 先提示用户输入行数和列数,把输入的字符串转成整数;
- 用得到的行列数创建二维数组;
- 初始化随机数生成器;
- 嵌套循环遍历数组的每个位置,用
randNum.Next(min, max+1)生成指定范围的随机数(注意Next方法是左闭右开,所以要+1才能包含max); - 可选的打印步骤是帮你直观看到生成的数组结果。
如果想进阶的话,可以加个输入验证,比如用户输入非数字的时候提示重新输入,避免程序崩溃,不过先把基础功能跑通更重要~
内容的提问来源于stack exchange,提问作者Joey Zimmerer
相关产品推荐
相关产品推荐

