C # Список цикла внутри цикла? - PullRequest
0 голосов
/ 09 ноября 2018

Я работаю над классным проектом, и вот что у меня есть до сих пор. Я знаю, что код возвращает 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;
}

Ответы [ 4 ]

0 голосов
/ 09 ноября 2018

Просто сохраните результат в переменной и верните его после завершения цикла:

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;
}
0 голосов
/ 09 ноября 2018
//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;
}
0 голосов
/ 09 ноября 2018

Я думаю, что вы хотите сделать, объявить bool с именем "result" и создать для него значение false. В цикле, в котором вы возвращаете true, установите для «result» значение true. В конце, где вы возвращаете false, выведите «result»

0 голосов
/ 09 ноября 2018

Если вы хотите завершить цикл, не возвращайте. Вместо этого держите результат в переменной, которую вы должны вернуть в конце:

    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...