LINUX.ORG.RU

Почему компилятор ругается на...


0

1

Not all code paths return value и Unreachable code в даном примере?

private bool IsOnlyOneVowel(string s)
        {
            int yes = 0;

            for (int i = 0; i <= s.Length-1; i++)
            {
                foreach (char k in vowel)
                {
                    if (s[i] == k) yes++;
                }
                if (yes == 1) return true;
                else return false;
            }
        }

На недоступный код ругается в i++....не пойму в чем дело..я последовательно в цикле беру следующую ьукву и сравниваю её со всеми элементами массива...что не так?

Первый цикл

for (int i = 0; i <= s.Length-1; i++)
теоретически может не совершить ни одной итерации. Тогда непонятно, что возвращать.

CARS ★★★★
()

Если s.Length==0 то грабли.

io ★★
()

А зачем тебе тут цикл? Вот и ругается.
У тебя же в return в первой же итерации выкинет.

anonymous
()

Твой код, написанный правильно:

private bool IsOnlyOneVowel(string s)
{
    return s.Count(c => vowel.Contains(c)) == 1;
}

Хотя по хорошему надо возвращать после второй найденной гласной.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

когда нибудь я буду также писать, а пока имею то что есть)

BambarbiyaKirgudu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.