2011-11-28 71 views
0

获取每个特定数字。我可能会问一个简单的问题。好吧,让我开始吧。C#,再次从0到9999

我想要得到每个数字从0到9999。每个具体数字是。为什么?那么,我需要它的案件号码。这是我迄今为止;

  for (int i = 0; i < 9999; ++i) 
      { 
       if (line.Contains("if(intid == " + i + ")") || line.Contains("if intid == " + i) && !line.EndsWith(" then")) 
       { 
        ErrorBox.Items.Add("ERROR: You're missing then near " + line + " TIME: " + DateTime.Now); 
       } 
      } 

我有什么上面只会得到最后一个号码是9999,但我想每一个具体的数字0,1,2,3,4,5,等“我”应该检索每个号码最高达到9999.但是,“for”循环无法正常工作。

回答

0

循环看起来很好,我会说这个问题是与你的if语句。试试这个:

if (line.Contains("if(intid == " + i + ")") || line.Contains("if intid == " + i) && !line.EndsWith(" then")) 
{ 
    ErrorBox.Items.Add("ERROR: You're missing then near " + line + " TIME: " + DateTime.Now); 
} 
else 
    ErrorBox.Items.Add("Not an error"); 
0

你已经被我声明为int;但是string.contains方法期望看到一个字符串。

那么,你有我在你的包含,使这个i.ToString()代替:

if (line.Contains("if(intid == " + i.ToString() + ")") || line.Contains("if intid == " + i.ToString()) && !line.EndsWith(" then")) 

我不知道为什么它会为9999而不是其他人的工作。可能是||的逻辑和& &?

Andrew

+0

哇,显然它把它作为一个字符串。谢谢,它工作。它现在将获得每个数字。只有一个问题是它没有正确地执行line.Contains(“if(intid ==”+ i.ToString()+“))”。 –

0

我想你可能有prescendence的问题。在||之前评估& &。它就像1 + 2 * 3等于7。您需要添加()才能正确评估您的表达。 (B1 || B2)& & B3

编辑

bool b1 = line.Contains("if(intid == " + i + ")"); 
bool b2 = line.Contains("if intid == " + i); 
bool b3 = !line.EndsWith(" then"); 

所以写

if ((line.Contains("if(intid == " + i + ")") || line.Contains("if intid == " + i)) 
    && !line.EndsWith(" then"))