Member 13299117 Ответов: 3

Получение ошибки - не все пути кода возвращают значение


я получаю эту ошибку
not all code paths return a value
я возвращаю строку в программе, но все же почему я получаю ошибку?

class GuessNumber
{
    public int number;
    public Random Rand;

    public string randNum()
    {
        int randomNumber = Rand.Next(1, 9);
        string guessed = "";
        while(guessed !="correct")
        {
            if(randomNumber > number)
            {
                guessed = "too low";
                return guessed;
            }
            else
                if(randomNumber < number)
            {
                guessed = "too high";
                return guessed;
            }
            else
            {
                guessed = "correct";
                return guessed;
            }
        }
    }
}


кто-нибудь, пожалуйста, объясните мне.

Что я уже пробовал:

я поместил два параметра в метод randNum и вернул один из них, но все равно не работает.

Paulo Zemek

Я думаю, что вы намеревались написать в то время как (угадал != "")
Таким образом, этот код написан, он никогда не войдет в while и в конце метода уйдет, не вернувшись.

3 Ответов

Рейтинг:
26

Dave Kreskowiak

В этом легко разобраться. Что происходит, когда while условное выражение принимает значение false? Ты же не в while петля больше нет, так где же return заявление есть?


Рейтинг:
2

uvpurohit

Simply return once after setting value of guessed

class GuessNumber
        {
            public int number;
            public Random Rand;

            public string randNum()
            {
                int randomNumber = Rand.Next(1, 9);
                string guessed = "";
                while (guessed != "correct")
                {
                    if (randomNumber > number)
                    {
                        guessed = "too low";
                        
                    }
                    else
                        if (randomNumber < number)
                    {
                        guessed = "too high";
                        
                    }
                    else
                    {
                        guessed = "correct";
                        
                    }
                }
                return guessed; //simply return once after setting value of guessed
            }
        }


0x01AA

С относительно высоким шансом произвести петлю навсегда ;)

Рейтинг:
1

Patrice T

Компилятор жалуется, потому что

public string randNum()
{
    int randomNumber = Rand.Next(1, 9);
    string guessed = "";
    while(guessed !="correct")
    {
        if(randomNumber > number)
        {
            guessed = "too low";
            return guessed;
        }
        else
            if(randomNumber < number)
        {
            guessed = "too high";
            return guessed;
        }
        else
        {
            guessed = "correct";
            return guessed;
        }
    }
    // when execution reach this point, there is no return value.
    // The compiler do not know that execution will never reach this point.
}