c# - C#如何继续搜索我的列表中的项目,而不是在一次搜索后关闭应用程序
问题描述
谢谢你的帮助,我是编程新手,我试过谷歌但找不到答案。
我正在寻找的是一种让我继续在我的列表中搜索项目而不会在仅一次搜索后关闭的方法。非常感谢!
我试过的代码是:
static void Main(string[] args)
{
string appName = "Fruitsalad Jens";
string appVersion = "1.0.0";
string appAuthor = "Jens Jonassen";
// Farge
Console.ForegroundColor = ConsoleColor.Green;
// Versjon
Console.WriteLine("{0} Versjon {1} by {2}", appName, appVersion, appAuthor);
// Tilbakestill Fargen
Console.ResetColor();
// Velkomst
Console.WriteLine("Hello, who are you?");
string navn = Console.ReadLine();
Console.WriteLine("Welcome to fruit finder {0}! Which fruit do you need to find?", navn);
{
string sSearch;
List<Frukter> listFrukter = new List<Frukter>();
listFrukter.Add(new Frukter());
listFrukter[0].Navn = "Orange";
listFrukter[0].Pris = 32.5;
listFrukter.Add(new Frukter());
listFrukter[1].Navn = "Apple";
listFrukter[1].Pris = 23;
listFrukter.Add(new Frukter());
listFrukter[2].Navn = "Grapes";
listFrukter[2].Pris = 18.90;
listFrukter.Add(new Frukter());
listFrukter[3].Navn = "Mango";
listFrukter[3].Pris = 48;
sSearch = Console.ReadLine();
for (int iCount = 0; iCount < listFrukter.Count; iCount++)
{
if (listFrukter[iCount].Navn.Equals(sSearch))
{
Console.WriteLine("Found it!");
Console.WriteLine(listFrukter[iCount].getData());
}
}
Console.ReadLine();
解决方案
添加while
循环:当用户想要继续搜索时:
...
// keep on looping (infinite loop)...
while (true) {
Console.WriteLine("Welcome to fruit finder {0}! Which fruit do you need to find? Q for quit", navn);
sSearch = Console.ReadLine().Trim();
// ... until user enters "q" for quit
if (string.Equals(sSearch, "Q", StringComparison.OrdinalIgnoreCase))
break;
for (int iCount = 0; iCount < listFrukter.Count; iCount++)
{
if (listFrukter[iCount].Navn.Equals(sSearch))
{
Console.WriteLine("Found it!");
Console.WriteLine(listFrukter[iCount].getData());
}
}
Console.ReadLine();
}
...
编辑:不同实现中的相同想法(循环)(请参阅下面的 Pol Vilarrasa 评论):
// loop once and more if user wants to search again
do {
Console.WriteLine("Welcome to fruit finder {0}! Which fruit do you need to find?", navn);
sSearch = Console.ReadLine().Trim();
for (int iCount = 0; iCount < listFrukter.Count; iCount++)
{
if (listFrukter[iCount].Navn.Equals(sSearch))
{
Console.WriteLine("Found it!");
Console.WriteLine(listFrukter[iCount].getData());
}
}
Console.WriteLine("Another search Y/ N?");
sSearch = Console.ReadLine().Trim();
}
while (string.Equals(sSearch, "Y", StringComparison.OrdinalIgnoreCase));
...
推荐阅读
- visual-studio-code - VS Code - 折叠代码块时隐藏右括号
- javascript - 使用正则表达式将字符串中的两个 delemeter 拆分后获取中间部分
- asp.net - 通过 ajax 调用 webmethod 时发生 500 内部服务器错误。这仅在实时服务器中发生,在 localhost 中工作正常
- google-cloud-platform - FAILED_NOT_VISIBLE 负载平衡中由 Google 管理的 SSL 证书
- java - 有没有什么简单的方法可以在按下特定按钮后重新运行方法/程序?
- javascript - 将变量内插为组件模板的内联样式参数?
- pandas - 高效的 Dataframe 列(对象)到 DateTime 的转换
- gitlab-ci - 如何使用 lftp 删除除 cgi-bin 和 .ftpquota 之外的所有文件
- docker - CRIT Supervisor 以 root 身份运行(配置文件中没有用户)_将 sameersbn/gitlab 升级到最新版本
- firebase - 不能在颤动的火力基地中一起使用 Where 和 orderBy