我应该制作一个列表字典,以显示不同人群测试的分数,最终结果应该像这样:
当前我的代码看起来像这样,我遇到的问题是数字打印了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();
}
}
}
答案 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();
}
答案 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}");
}