C#如何将process、arrival等数组合并存入二维数组mat
多组数组合并为目标二维数组修复方案
原代码存在的问题
- 变量误用:存储进程总数的
process是int类型,不是数组,无法通过process[i]获取进程编号 - 二维数组维度定义不符合需求:你需要的二维数组每行仅包含3个字段(进程号、到达时间、burst时间),原代码定义的10行6列固定维度既不匹配需求也无法适配可变的进程数量
- 循环逻辑冗余错误:不需要嵌套双层循环,仅需单层循环遍历每个进程,分别给当前行的3个位置赋值即可
- 输入数组存在溢出风险:arrival、burst初始化固定长度100,若输入进程数超过100会触发越界异常,应该根据输入的进程数动态创建
修复后可运行代码
// 变量定义调整 int processCount; double[] arrival; double[] burst; double[,] mat; Console.WriteLine("Enter number of Process: "); processCount = Convert.ToInt32(Console.ReadLine()); // 动态创建二维数组:processCount行,3列 mat = new double[processCount, 3]; Console.WriteLine("Enter Arrival time of each process: "); arrival = Array.ConvertAll(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries), Double.Parse); Console.WriteLine("Enter Burst time of each process: "); burst = Array.ConvertAll(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries), Double.Parse); // 单层循环赋值即可 for (int i = 0; i < processCount; i++) { mat[i, 0] = i + 1; // 进程编号默认从1开始,需要从0开始的话直接赋值i即可 mat[i, 1] = arrival[i]; mat[i, 2] = burst[i]; }
代码说明
- 把原冲突变量
process重命名为processCount避免语义混淆 - 根据输入的进程数动态创建对应长度的arrival、burst和二维数组mat,避免内存浪费和越界问题
- 去掉冗余的内层循环,仅用一层循环就完成所有行的赋值,符合你需要的
{{process,arrival,burst}, ...}结构
内容的提问来源于stack exchange,提问作者bluu
相关产品推荐
相关产品推荐

