Loading...
Valko98 avatar Valko98 7 Точки

Здравейте, хора! Имам една често срещана от мен грешка на методи, за която ми трябва малко помощ!

Задачата, която качвам се казва Array Manipulator и е 11-тата задача от лаба на методите за C#.

https://pastebin.com/3VySDpbr

Та на последния метод в този случай ми излиза една грешка, която разбирам какво изисква от мен, но не мога да осмисля как да я избягвам и как да се справям с нея.

Грешката е: not all code paths return value.

Моля за малко помощ, ако някой може да ми каже къде ми е грешката в кода, но и също да ми помогне да разбера самата основа на грешката за да мога в бъдещете да се справям с нея и сам.

Благодаря!

Тагове:
0
Fundamentals Module
vgivanov avatar vgivanov 42 Точки

Здравей,

в случая можеш да си направиш една променлива която да държи резултата и вместо да ретърнваш в цикъка просто брейкваш, а накрая на функцията връщаш резултата.

Ето така:

        static int[] firstCountEvenOdd(int[] array, int count, string evenOrOdd)
        {
            int[] firstEvenOdd = new int[count];

            int evenCount = 0;
            int oddCount = 0;
            for (int currentIndex = 0; currentIndex < array.Length; currentIndex++)
            {
                if (evenOrOdd == "even" && array[currentIndex] % 2 == 0)
                {
                    evenCount++;
                    firstEvenOdd[evenCount - 1] = array[currentIndex];

                    if (evenCount == count)
                    {
                        break;
                    }
                }
                else if (evenOrOdd == "odd" && array[currentIndex] % 2 != 0)
                {
                    oddCount++;
                    firstEvenOdd[oddCount - 1] = array[currentIndex];

                    if (oddCount == count)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }

            return firstEvenOdd;
        }

 

 

Компилатора ти дава грешката, защото при вътрешните if-ве правиш return, но за тях няма else, а при това положение остават случи при който не може да се излезе от метода.

Това което се получава в твоя код е следното:

static bool AreEqual(int a, int b)
{
     if (a == b)
     {
         return true;
     }
}

Ако a != b не излизаме от метода.

 

 

 

 

0
26/10/2019 19:01:39
Valko98 avatar Valko98 7 Точки

@vgivanov

Благодаря, всъщност от неволята и аз стигнах до този извод, за това интуитивно направих точно това, което ти ме посъветва, друг е въпроса, че програмата все още не работи правилно и трябва да дебъгвам... Но много благодаря за точния и бърз отговор!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.