如何解决在带有字符串数组 C# 的 foreach 循环中显示错误结果的单个输出
如果有人回答了这个问题,我深表歉意,我无法准确找到我正在寻找的内容,也无法将其简明地放在一个句子中进行搜索。我几乎自己解决了它,但无法弄清楚。我是编程新手,所以这对某人来说可能是一个简单的答案。
我有一个字符串数组,一个人可以在其中输入一个字母,并找到包含该字母的所有字符串并显示它们。这是我使用 foreach 循环实现的。
我面临的问题是,如果没有匹配项,我只希望它输出一个“No Match”字符串,而不是替换每个不匹配的字符串。
这是有问题的代码块:
string letter = Console.ReadLine();
string no = "No match";
foreach(string x in words)
{
if(x.Contains(letter))
{
Console.WriteLine(x);
}
else {
Console.WriteLine(no);
}
}
解决方法
不要在循环内输出到控制台,而是考虑将执行逻辑的代码与与用户交互的代码分开......即,将 Console.WriteLine
放在后面。
IEnumerable<string> GetMatches(string[] words,string letter)
{
foreach(string x in words)
{
if(x.Contains(letter)) yield return x;
}
}
//Main program
string letter = Console.ReadLine();
var matches = GetMatches(words,letter).ToList();
if (matches.Length == 0)
{
Console.WriteLine("No match.");
}
else
{
foreach (var match in matches)
{
Console.WriteLine(match);
}
}
,
您可以使用 bool
来跟踪是否找到匹配项:
string letter = Console.ReadLine();
string no = "No match";
bool foundMatch = false;
foreach(string x in words)
{
if(x.Contains(letter))
{
Console.WriteLine(x);
foundMatch = true;
}
}
if(!foundMatch)
{
Console.WriteLine(no);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。