我正在做一个课堂项目,到目前为止,这是我所拥有的。我知道代码找到匹配项时返回true,但我希望它一直循环运行,直到找不到更多实例为止。
我在for/while
循环中查看了很多站点,但是我似乎无法正确理解语法和/或在应用逻辑时它不起作用。
public bool Remove(T toRemove)
{
for (int i = 0; i < count; i++)
{
if (items[i].Equals(toRemove))
{
int removeIndex = i;
for (int j = removeIndex; j < count - 1; j++)
{
items[j] = items[j + 1];
}
return true;
}
}
return false;
}
答案 0 :(得分:2)
如果要完成循环,请不要返回。而是将结果保留在var上,您应该最后返回:
public bool Remove(T toRemove)
{
bool result = false;
for (int i = 0; i < count; i++)
{
if (items[i].Equals(toRemove))
{
int removeIndex = i;
for (int j = removeIndex; j < count - 1; j++)
{
items[j] = items[j + 1];
}
result = true;
}
}
return result;
}
答案 1 :(得分:1)
//Use a boolean variable and set it to true if an item is found,
//and continue your loop until you go through all elements, then return the boolean value.
public bool Remove(T toRemove)
{
bool match= false; //boolean to track if any match is found
for (int i = 0; i < count; i++)
{
if (items[i].Equals(toRemove))
{
int removeIndex = i;
for (int j = removeIndex; j < count - 1; j++)
{
items[j] = items[j + 1];
}
match= true;
}
}
return match;
}
答案 2 :(得分:1)
只需将结果保存在变量中,然后在循环完成后返回即可:
public bool Remove(T toRemove)
{
bool result = false;
for (int i = 0; i < count; i++)
{
if (items[i].Equals(toRemove))
{
int removeIndex = i;
for (int j = removeIndex; j < count - 1; j++)
{
items[j] = items[j + 1];
}
result = true;
}
}
return result;
}
答案 3 :(得分:0)
我认为您想要做的是声明一个名为“结果”的布尔并将其实例化为false。在返回true的循环中,将“结果”设置为true。最后,在您返回false的地方,返回“结果”