Софтуерно Инженерство
Loading...
+ Нов въпрос
Valko98 avatar Valko98 5 Точки

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

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

https://pastebin.com/3VySDpbr

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

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

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

Благодаря!

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

Здравей,

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

Ето така:

        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 5 Точки

@vgivanov

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

0