基本上在创建列表“rValues”之后,我使用列表来查看其中是否包含任何值is == 0
。所引用的行被注释为“关注行”,但是当upperB设置为5时,这会导致程序为is ==0
列表中的每个值写下x的值。
我的问题是,有没有办法说明列表中的第一个值is == 0
它写下x的值然后程序继续,几乎就像只有一个值的一个列表被发现它被注意到,其余的列表被删除?谢谢。
List<int> rValues = new List<int>();
do
{
x++;
v = 0;
rValues.Clear();
do
{
v++;
r = x % v;
rValues.Add(r);
} while (v < x);
foreach (int B in rValues)
{
if (B == 0) // line of concern
{
Console.WriteLine(x);
}
else
{
continue;
}
}
}
while (x != upperB);
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
我不知道为什么你在代码中编写了所有其他循环。要回答这个问题,只需要像下面那样,并且“继续”;不是必需的。
int c=0;
foreach (int B in rValues)
{
c++;
if (B == 0) // line of concern
{
Console.WriteLine(x);
}
else
{
//continue;
rValues.deleteat(c);
}
}
答案 1 :(得分:0)
尝试使用linq而不是foreach循环。然后只需致电rValues.Clear()
代码应如下所示:
List<int> rValues = new List<int>();
do
{
x++;
v = 0;
rValues.Clear();
do
{
v++;
r = x % v;
rValues.Add(r);
} while (v < x);
//my LINQ expression
Var B = rValues.FirstOrDefault( (result) => result==0);
rValues.Clear();
//back to your code
while (x != upperB);
Console.ReadLine();
}
答案 2 :(得分:0)
尝试这样的事情,打破循环,RemoveAt()不起作用的原因是它是一个Foreach循环,你在迭代它时不能修改Enumerable。这是安全的事情。
List<int> rValues = new List<int>();
bool found = false;
do
{
x++;
int v = 0;
rValues.Clear();
do
{
v++;
int r = x % v;
rValues.Add(r);
} while (v < x);
foreach (int B in rValues)
{
if (B == 0) // line of concern
{
found = true;
Console.WriteLine(x);
break;
}
}
}
while (x != upperB && !found);
Console.ReadLine();