我有一个包含3个元素的数组,我使用for
- 循环删除"1", "2"
但if
- 条件始终为false。问题是什么?
string[] listCountAnwser = {"1", "2", "3"};
List<string> listCountAnwsers = new List<string>(listCountAnwser);
for (int i = 0; i < listCountAnwsers.Count; i++)
{
if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i++]))
{
listCountAnwsers.Add(listCountAnwser[i]);
}
}
答案 0 :(得分:2)
有些事情引起了我的注意 首先,使用increment运算符是错误的。要确保运行此代码:
for (int i = 0; i < listCountAnwsers.Count; i++)
Console.WriteLine(listCountAnwsers[i] + "\t" + listCountAnwsers[i++]);
输出将如下:
1 1
3 3
这就是为什么您的代码永远不会进入if
条件的原因
另一个问题是你删除elemets。这需要更改列表的listCountAnwsers.Count
属性。确保:
for (int i = 0; i < list.Length; i++)
{
listCountAnwsers.Remove(listCountAnwsers[i]);
Console.WriteLine(listCountAnwsers.Count);
}
输出:
2
1
然后例外就像argument out of range
一样。确实。当你尝试这样的事情时,你也可以得到这样的例外:
if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i + 1]))
listCountAnwsers.Remove(listCountAnwser[i]);
因此,解决问题取决于您的需求。你想在结果中得到什么元素?请澄清
答案 1 :(得分:0)
试试这个。在检查条件后i++
增加i的值。所以你需要使用i+1
string[] listCountAnwser = {"1", "2", "3"};
List<string> listCountAnwsers = new List<string>(listCountAnwser);
for (int i = 0; i < listCountAnwsers.Count; i++)
{
if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i+1]))
{
listCountAnwsers.Add(listCountAnwser[i]);
}
}