字典问题

时间:2019-03-11 03:42:27

标签: c# list dictionary

我应该制作一个列表字典,以显示不同人群测试的分数,最终结果应该像这样:enter image description here

当前我的代码看起来像这样,我遇到的问题是数字打印了3次,而不是如图所示。请帮助!

static void Main(string[] args)
{
    Random myRandomGenerator = new Random();

    Dictionary<string, List<int>> table = new Dictionary<string, List<int>>();

    table["Meuleveld, McKenzie"] = new List<int>(){ myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60,100), myRandomGenerator.Next(60,100)};
    table["McGuire, Matthew"] = new List<int>(){ myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100) };
    table["Anderton, Paitlyn"] = new List<int>(){ myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100) };
    table["Moore, Jeni"] = new List<int>(){ myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100), myRandomGenerator.Next(60, 100) };

    foreach (string name in table.Keys)
    {
        List<int> value = table[name];

        foreach (int valueList in value)
        {

                Console.WriteLine($"{name} exam scores: {valueList}, {valueList}, {valueList}");

            Console.ReadKey();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

尝试一下,我首先使用Console.Write而不是WriteLine,因此分数的等级将显示在名称的下一位。然后在foreach之后为下一个人添加Console.WriteLine,将其打印到下一行。

使用Math.Round(average,2)意味着它将平均变量四舍五入到最接近的百分之一。

foreach (string name in table.Keys)
{
    List<int> value = table[name];
    double totalGrade = 0;
    Console.Write($"{name} exam scores: ");
    foreach (int valueList in value)
    {

        Console.Write($" {valueList}");
        double grade = valueList;
        totalGrade = grade + totalGrade;
    }
    double avarage = totalGrade / value.Count();
    Console.WriteLine($"");
    Console.WriteLine($"Average: {Math.Round(avarage,2)}");
    Console.WriteLine($"");
    Console.ReadKey();
}

enter image description here

答案 1 :(得分:0)

Well your Loop越野车。

将其更改为如下所示:

foreach (string name in table.Keys)
{
  List<int> value = table[name];
  Console.WriteLine($"{name} exam scores: {string.Join(" ", value)}");
}

更新(作为其作业):

foreach (string name in table.Keys)
{
    List<int> value = table[name];
    string scoreDisplay = string.Empty;

    foreach (var score in value)
    {
        scoreDisplay += score + " ";
    }
    Console.WriteLine($"{name} exam scores: {scoreDisplay}");
}