我在这里问如何读取一个字符串行,检查它是否包含在词典中,如果有,请在其中添加一个数字。例如,如果输入为 Gold ,下一行为 115 :则应将数字分配给字符串。每次循环旋转时,都应检查是否包含字符串,并向其添加下一个 int 行。
var text = new SortedDictionary<string, int>();
while (true)
{
for (int i = 0; i < 2000000000; i++)
{
string[] sequenceOfStrings = Console.ReadLine()
.Split();
var material = sequenceOfStrings[0];
if (material == "stop")
{
break;
}
if (!text.ContainsKey(material))
{
text.Add(material, i);
}
为您提供了一系列字符串,每个字符串都换行。控制台上的每个奇数行代表一种资源(例如,金,银,铜等)和每偶数 –数量。您的任务是收集资源并在新行中将它们打印出来。以以下格式打印资源及其数量: {资源} –> {数量}。输入的数量将在 [1…2000000000000]
感谢您的耐心配合。 汤姆
答案 0 :(得分:0)
解决您问题的代码如下:
var text = new SortedDictionary<string, int>();
while (true)
{
string material = Console.ReadLine();
if(material == "stop")
{
break;
}
string quantityString = Console.ReadLine();
if (!Int32.TryParse(quantityString, out int newQuantity))
{
continue;
}
if (text.TryGetValue(material, out int currentQuantity))
{
text[material] = currentQuantity + newQuantity;
}
else
{
text[material] = newQuantity;
}
}
foreach(var item in text)
{
Console.WriteLine($"{item.Key} : {item.Value};");
}
顺便说一句,您真的需要这里的SortedDictionary吗?如果您有很多键,那么(取决于输入数据的分布)与传统的Dictionary相比,执行 TryGetValue 可能要花费更多时间。