我想增加(使用计数器)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;
}
}
}
}
答案 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;
}