我正在尝试使用for循环将除了22和26之外的30的整数6添加到List中。但仍有22和26人加入。我做错了什么?
List<int> lineNumbers = new List<int>();
for (int x = 6; x < 30; x++)
{
if ((x != 22) || (x != 26))
{
lineNumbers.Add(x);
}
}
如果代码如下所示,则不会添加两个整数:
for (int x = 6; x < 30; x++)
{
if (x == 22 )
{
}
else if (x == 26)
{
}
else
{
lineNumbers.Add(x);
}
}
答案 0 :(得分:1)
您需要将||
替换为&&
:
for (int x = 6; x < 30; x++)
{
if ((x != 22) && (x != 26))
{
lineNumbers.Add(x);
}
}
或许,更清楚一点:
for (int x = 6; x < 30; x++)
{
if ((x == 22) || (x == 26))
continue;
lineNumbers.Add(x);
}
或者,您可以使用LINQ将其作为单行执行。这不一定更快或任何事情,所以如果您的for
循环更清楚,那么请保持原样。
lineNumbers.AddRange(Enumerable.Range(6, 24).Except(new[] { 22, 26 }));
答案 1 :(得分:1)
改变你的条件。使用&&
代替||
if ((x != 22) && (x != 26))
答案 2 :(得分:0)
使用&&
代替||
,因为您希望在两个条件之间进行匹配。
if ((x != 22) && (x != 26))
您也可以使用LINQ
执行此操作(不一定是我喜欢LINQ:)
var lineNumbers = Enumerable.Range(6, 30).Except(new[] {22, 26}).ToList();
答案 3 :(得分:0)
将if ((x != 22) || (x != 26))
替换为if ((x != 22) && (x != 26))
或者你可以使用如下的继续:
for (int x = 6; x < 30; x++)
{
if ((x == 22) || (x == 26))
continue;
else
lineNumbers.Add(x);
}