在数组C#内增加计数器

时间:2014-04-26 12:36:47

标签: c# arrays

我想增加(使用计数器)C#数组的值。但是我总是收到错误:

索引超出了数组的范围。

这是我的代码。

while ((line = s.ReadLine()) != null)
{

    string[] parts = new string[40];
    parts=line.Split(' ');
    int a;
    for (a = 0; a <= (parts.Length - 1); a++)
    {

        if (parts[a] == "if")
        {
            node = node + 1;
            edge = edge + 1;
            int b = a + 2;
            Console.Write(parts[b]);
            if ((parts[a + 2]) == "{")
            {
                node = node + 1;
            } 
        }
    }
}

4 个答案:

答案 0 :(得分:5)

问题是parts[a + 2]当你到达结束时a + 2超出数组范围

答案 1 :(得分:1)

你检查了吗

parts[a + 2]不超过数组长度?

一种解决方案如下:

while ((line = s.ReadLine()) != null)
{

    string[] parts = new string[40];
    parts=line.Split(' ');
    int a;
    for (a = 0; a <= (parts.Length - 1); a++)
    {

        if (parts[a] == "if")
        {
            node = node + 1;
            edge = edge + 1;
            int b = a + 2;
            Console.Write(parts[b]);
            if (((a + 2) < parts.length) && (parts[a + 2]) == "{")
            {
                node = node + 1;
            } 
        }
    }
}

在代码中进行额外检查以查看+ 2是否不超过parts-array的长度。然后,如果数组索引a + 2处的内容等于“{”,则完成检查。如果两个条件都为真,则计算块内的代码。

答案 2 :(得分:0)

如果使用零件[a + 2],则只能执行for循环,直到parts.Lenth -2:

while ((line = s.ReadLine()) != null)
{

    string[] parts = new string[40];
    parts=line.Split(' ');
    int a;
    for (a = 0; a <= (parts.Length - 2); a++)
    {

        if (parts[a] == "if")
        {
            node = node + 1;
            edge = edge + 1;
            int b = a + 2;
            Console.Write(parts[b]);
            if ((parts[a + 2]) == "{")
            {
                node = node + 1;
            } 
        }
    }
}

答案 3 :(得分:0)

你的问题在这里

int b = a + 2;
Console.Write(parts[b]); // here is the first problem
if ((parts[a + 2]) == "{") // why do a+2 here when you know parts[b] is the same thing (a +2)
{
      node = node + 1;
}