如何添加条件循环

时间:2014-03-26 00:58:42

标签: c#

我想检查数组中的值,如果存在则返回值else返回消息并从数组中读取另一个值。添加

 else
    {
      MessageBox.Show("This Item ID Does Not Exist");
    }

但问题是当该值不在数组中时,它希望显示消息1258038次。 我如何检查值(输入),如果它存在,我可以继续,如果它不存在于数组中,它返回并读取另一个值(输入可以是几个必须逐个读取的值)


 for (int cun = 0; cun < ItemIdNumber.Length; cun++)
    {
      int Item_Id = Convert.ToInt32(ItemIdNumber[cun]);
      for (int yyu = 0; yyu <= 1258038; yyu++)
      {
         int weer = c[yyu];
         if (weer == Item_Id)
         {
           itemseq = yyu;
         }
         else
         {
           MessageBox.Show("This Item ID Does Not Exist");
         }
      }

      float[] i_ff = b[itemseq];
      for (int ii = 0; ii < i_ff.Length; ii++)
      {
    .......

2 个答案:

答案 0 :(得分:2)

使用break提前离开循环。您还需要稍微更改逻辑,这样您就不会在每次迭代中显示消息。这只是一种可能性:

int? itemseq = null;

for (...)  // outer loop
{
    ...
    for (...)  // inner loop
    {
        if (weer == Item_Id)
        {
            itemseq = yyu;
            break;
        }
    }

    if (!itemseq.HasValue)
        MessageBox.Show("This Item ID Does Not Exist");

    ...
}

我想通过一些思考,你可以让它更具可读性。

  1. 您有两个要搜索的馆藏 - ItemIdNumberc
  2. 您正在寻找ItemIdNumber中与c的前1258038值中的项匹配的第一个值。
  3. 可能会有类似LINQ语句的内容,但我不确定您的收藏品的类型。我正在写这个,所以它可能无法按原样编译。应该给你一些合作的东西。

    var id = (from id in ItemIdNumber
              join cid in c.Take(1258038) on Convert.ToInt32(id) equals cid
              select cid).FirstOrDefault();
    
    if (!id.HasValue)
        MessageBox.Show("This Item ID Does Not Exist");
    

答案 1 :(得分:0)

for (int cun = 0; cun < ItemIdNumber.Length; cun++) {
    ...

    boolean found = false;    

    for (int yyu = 0; yyu <= 1258038; yyu++) {
        int weer = c[yyu];
        if (weer == Item_Id)
        {
            itemseq = yyu;
            found = true;
            break;
        }
    }
    if(!found) {
        MessageBox.Show("This Item ID Does Not Exist");
    }

    ...
}