如果在循环后没有匹配项,如何仅获得一个答案

时间:2019-06-01 13:43:08

标签: c# loops

我的代码在数组中有一个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");

但是它不起作用。

我如何得到想要的东西?

3 个答案:

答案 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");}