2014-03-26 54 views
0

我想检查数组中的值,如果存在返回值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++) 
     { 
    ....... 
+0

边注:请尽量与其他人共享代码使用良好的变量名/方法名。 'ii'和'yyu' *可能给人一种印象,即你不关心你的代码。 –

+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个值中的项目相匹配。

类似这样的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"); 
+0

也许在这种情况下,当item_id不存在于数组中时,消息仍然会显示1258038次.. –

+0

yeap @YohanesKhosiawan许先汉。它显示了1258038次的错误。 – user3446681

+0

它仍然显示1258038次错误@GrantWinney – user3446681

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

    ... 
}