我有像这样的循环
int numberofelements=20;
for(int i=0;i<numberofelements;i++)
{
if(i==numberofelements)
{
break;
}
if(i==i+1))
{
//do some thing
}else
{
//do some thing else
}
}
很明显,这为列表的最后一个元素提供了运行时异常:Index was out of range. Must be non-negative and less than the size of the collection.
如何处理此列表的最后一个元素而不是检查条件i==i+1
?
答案 0 :(得分:3)
看起来你试图得到一个包含少于20个元素的List的Elemrnt,你将不得不展示一些代码,你在循环中用你做什么。
此外,您只需要 else 部分,因为其他部分永远不会成为现实:
“我”不能等于“ i + 1 ”,因为你的循环限制,它将永远不会等于 numberofelements (i&lt; numberofelements)
您可以通过以下方式访问所有元素:
for (int i = 0; i < list.Count; i++) // Loop through List with for
{
// do something with list[i]
}
答案 1 :(得分:1)
为什么不这样做:
for (int i = 0; i < numberofelements - 1; i++)
{
// do something
}
// do something else with numberofelements - 1
答案 2 :(得分:0)
看来你的循环对于20个元素是正确的
for(int i=0;i<numberofelements;i++)
但是对于最后一个元素,您需要检查i == numberofelements - 1
哪个是索引19。
也不需要
if(i==numberofelements)
{
break;
}
因为我永远不会等于20的数量元素
答案 3 :(得分:0)
我认为问题的一部分是你的第一个if语句永远不会被使用。 for循环将在i等于numOfElements之前退出(除非你在for循环中修改i)。
所以你可以这样做:
if (i == (numOfElements - 1)) {
// do something
break;
}
这会使你不会得到空指针错误。
答案 4 :(得分:0)
试试这个......
int numberofelements=20;
for (int i = 0; i < numberofelements; i++)
{
if (i == numberofelements - 1)
{
Console.WriteLine("last element" + i);
break;
}
else
{
if (i == i + 1)
{
Console.WriteLine(i);
}
else
{
Console.WriteLine(i);
}
}
}