【发布时间】:2020-07-26 00:42:16
【问题描述】:
我需要为学校做一个“电影排名”。 语言是 C#
我想用字典,在哪里
- 键 = 电影名称
- 值 = 指定的星星。
将它放在一个循环中并要求 5 个输入。代码如下所示:
// Create a dictionary with string key and Int16 value pair
Dictionary<string, Int16> Ranking = new Dictionary<string, Int16>();
for (int i = 1; i < 6; I++)
{
string MovieName = txbPelicula.Text;
Int16 Stars = Convert.ToInt16(txbPuntuacion.Text);
Ranking.Add(MovieName, Stars);
MessageBox.Show("la lista de películas es " + Ranking);
}
退出循环后,对字典进行排序并按星数排序打印。
我的头脑很好吗? 我的一些同学使用了 List,但我不明白他们如何将 Movie Name 与它的 Stars 一起加入。
谢谢
【问题讨论】:
-
如果您需要使用列表,那么您可以有 2 个列表:一个用于存储键,一个用于存储值。然后你可以索引它们,因为你会知道两个键值对将具有相同的索引
-
您的代码会将相同的电影和评分添加到字典中 5 次。您需要考虑用户将如何输入数据并基于此构建您的字典。
-
不要使用
Convert.ToInt16。请改用Int16.TryParse- 否则如果有人输入非数字值并让您的程序区分0和无效输入,您的程序可能会崩溃。 -
您还需要检查指定的电影名称是否已经在字典中,否则
.Add调用中的重复键会导致崩溃。 -
还在
Dictionary构造函数调用中使用不区分大小写的字符串比较,否则您将有重复的“拯救私人瑞恩”和“拯救私人瑞恩”,例如 - 但是你'将需要构建一个适当的反规范化器,以便“拯救 pvt ryan”或“拯救私人 ryan (1998)”也引用相同的条目。
标签: c# dictionary