C# c语言中字典中最常用的3种转换#
我想弄明白为什么它不起作用。我有一个简单的应用程序转换器应用程序。有6种方法可以将某些单位转换为摄氏度,例如将华氏度转换为摄氏度,将摄氏度转换为华氏度。点击主菜单中的“2”,应用程序应该显示3个最流行的转换,但我只看到2个C# c语言中字典中最常用的3种转换#,c#,C#,我想弄明白为什么它不起作用。我有一个简单的应用程序转换器应用程序。有6种方法可以将某些单位转换为摄氏度,例如将华氏度转换为摄氏度,将摄氏度转换为华氏度。点击主菜单中的“2”,应用程序应该显示3个最流行的转换,但我只看到2个 using System; using System.Collections.Generic; using System.IO; namespace HelloWorld { class PopularConversions { public
using System;
using System.Collections.Generic;
using System.IO;
namespace HelloWorld
{
class PopularConversions
{
public static void ReadLogs()
{
var popularConversions = new Dictionary<string, int>();
var conversions = new Dictionary<string, int>
{
{ "Fahrenheit -> Celsjusz", 0 },
{ "Celsjusz -> Fahrenheit", 0 },
{ "Mila -> Kilometr", 0 },
{ "Kilometr -> Mila", 0 },
{ "Funt -> Kilogram", 0 },
{ "Kilogram -> Funt", 0 },
};
string[] lines = File.ReadAllLines("stats.txt");
foreach (string line in lines)
{
string from = line.Split("|")[2];
string to = line.Split("|")[3];
if (from == "Funt" && to == "Kilogram")
conversions["Funt -> Kilogram"]++;
else if (from == "Kilogram" && to == "Funt")
conversions["Kilogram -> Funt"]++;
else if (from == "Mila" && to == "Kilometr")
conversions["Mila -> Kilometr"]++;
else if (from == "Kilometr" && to == "Mila")
conversions["Kilometr -> Mila"]++;
else if (from == "Fahrenheit" && to == "Celsjusz")
conversions["Fahrenheit -> Celsjusz"]++;
else if (from == "Celsjusz" && to == "Fahrenheit")
conversions["Celsjusz -> Fahrenheit"]++;
}
for (int i = 0; i < 3; i++)
{
string result = "Funt -> Kilogram";
foreach (string key in conversions.Keys)
{
if (!popularConversions.ContainsKey(key) && conversions[result] < conversions[key])
result = key;
}
popularConversions.TryAdd(result, conversions[result]);
}
foreach (string key in popularConversions.Keys)
{
Console.WriteLine("\n" + key + ": " + popularConversions[key]);
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
名称空间HelloWorld
{
类PopularConversions
{
公共静态void ReadLogs()
{
var popularConversions=新字典();
变量转换=新字典
{
{“华氏->摄氏度”,0},
{“Celsjusz->Fahrenheit”,0},
{“Mila->km”,0},
{“公里->米拉”,0},
{“Funt->kg”,0},
{“kg->Funt”,0},
};
string[]lines=File.ReadAllLines(“stats.txt”);
foreach(行中的字符串行)
{
string from=line.Split(“|”)[2];
string to=line.Split(“|”)[3];
if(from==“Funt”&&to==“kg”)
换算[“Funt->kg”]+;
否则,如果(从==“千克”到==“Funt”)
换算[“千克->重量”]+;
否则如果(从==“Mila”到==“km”)
换算[“米拉->公里”]+;
否则如果(从==“公里”到==“米拉”)
换算[“公里->米拉”]+;
else if(from==“华氏”&&to==“摄氏度”)
转换[“华氏->摄氏度”]+;
else if(from==“Celsjusz”&&to==“华氏度”)
转换[“Celsjusz->Fahrenheit”]+;
}
对于(int i=0;i<3;i++)
{
字符串结果=“Funt->kg”;
foreach(conversions.Keys中的字符串键)
{
if(!popularConversions.ContainsKey(键)&&conversions[result]
您需要在问题中包含该文件,或者最好将其内联到代码中
你的算法毫无意义。如果“funt->kiggle”是最流行的转换,那么您将一次又一次地将其“TryAdd”到popularConversions,因此您将在popularConversions中使用一个条目
您需要做的是对转换条目进行排序,并取前3位。我没有时间做这件事,但大致是这样的:
var convList=conversions.ToList();
convList.Sort((kvp1,kvp2)=>{返回kvp1.Value.CompareTo(kvp2.Value);});
convList.Take(3.ToList().ForEach(kvp=>{
Console.WriteLine(“\n”+kvp.Key+”:“+kvp.Value”);
});
conversions.OrderByDescending(x=>x.Value)。取(3)