如何在多维锯齿状阵列中添加项目?

时间:2014-12-01 00:04:41

标签: c# multidimensional-array jagged-arrays

我正在尝试将项添加到已存在的锯齿状阵列中,但我遇到了一些麻烦。我的程序是一个控制台应用程序,用于处理学生成绩(添加学生,删除学生,更改姓名,为各个学生添加成绩等)。我正在阅读一个顺序文件,其中包含学生ID,姓名,然后是每个学生的成绩(0-100)。我决定使用锯齿状的阵列,因为我不知道每个学生会有多少成绩,也不知道我会有多少学生。

现在我正在努力为现有学生增加成绩。我的文本文件如下所示:

 00000,Mimzi Dagger,100,50,75,70,45,10,98,83
 00001,Alexander Druaga,89,45,80,90,15,73,99,100,61
 00002,Nicholas Zarcoffsky,100,50,80,50,75,100,100
 00003,Kantmiss Evershot,50,100

我希望能够使用For循环并搜索用户输入的学生ID,一旦我找到该学生ID,我想在该学生下添加成绩。这是我的一段代码,但它不起作用。

for (int i = 0; i < studentArray.Length; i++)
{
    if (studentID == studentArray[i][0])
    {
        studentArray[i][studentArray[i].Length + 1] = newGrade;
    }
}

2 个答案:

答案 0 :(得分:0)

虽然这是我在现实世界中永远做不到的事情......我认为它确实满足了你对作业的限制。

class Program
{
    static void Main(string[] args)
    {

        List<List<string>> dataList = new List<List<string>>();

        dataList.Add(new List<string> { "00000", "Mimzi Dagger", "100", "50", "75", "70", "45",    "10", "98", "83" });
        dataList.Add(new List<string> { "00001", "Alexander Druaga", "89", "45", "80", "90", "15", "73", "99", "100", "61" });
        dataList.Add(new List<string> { "00002", "Nicholas Zarcoffsky", "100", "50", "80", "50", "75", "100", "100" });
        dataList.Add(new List<string> { "00003", "Kantmiss Evershot", "50", "100" });

        for (int i = 0; i < dataList.Count; i++)
        {
            foreach (var item in dataList[i])
            {
                Console.WriteLine(item);
            }
        }

        Console.ReadLine();

    }
}

答案 1 :(得分:0)

这是做你想做的最基本的方式:

for (int i = 0; i < studentArray.Length; i++)
{
    if (studentID == studentArray[i][0])
    {
        Array.Resize(ref studentArray[i], studentArray[i].Length + 1);
        studentArray[i][studentArray[i].Length - 1] = newGrade;
    }
}

我个人觉得有点脑痛。

我宁愿这样写:

for (int i = 0; i < studentArray.Length; i++)
{
    if (studentID == studentArray[i][0])
    {
        studentArray[i] =
            studentArray[i]
                .Concat(new [] { newGrade })
                .ToArray();
    }
}