我的代码在数组中有一个for循环,并且有if语句,如果不匹配,我只想得到一个答案。
for (int i = 0; i < arr.Length; i++)
{
if (arr[i].GetSomeValue() >= 1 && i].GetSomeValue() <= 5)
Console.WriteLine(arr[i]);
else
Console.WriteLine("No data");
}
但是,我得到了这些:
No data
No data
No data
No data
如果没有匹配项,我只需要一个“无数据”。 我尝试添加
else break;
}
Console.WriteLine("No data");
但是它不起作用。
我如何得到想要的东西?
答案 0 :(得分:1)
我建议像这样的代码使用标志:
bool flag = false ;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i].GetSomeValue() >= 1 && arr[i].GetSomeValue() <= 5)
{
Console.WriteLine(arr[i]);
flag=true;
}
}
if(!flag)
{
Console.WriteLine("No data");
}
答案 1 :(得分:0)
Alternative based on linq:
using System.Linq;
...
var withinSpecs = arr.Where(e => e.GetSomeValue() >= 1 && e.GetSomeValue() < 5).ToArray();
if(withinSpecs.Length == 0)
{
Console.WriteLine("No data");
}
else
{
foreach(var element in withinSpecs)
Console.WriteLine(element);
}
答案 2 :(得分:-1)
// Don't check the no data condition until after the loop
int noData = -1;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i].GetSomeValue() >= 1 && arr[i].GetSomeValue() <= 5) {
Console.WriteLine(arr[i]);
noData = 0;
}
}
if (noData == -1) {Console.WriteLine("No data");}