C # рекурсивный оператор в ошибке калькулятора - PullRequest
0 голосов
/ 09 ноября 2018

Ранее я создал простой калькулятор, и теперь я пытаюсь улучшить его, добавив немного больше встроенной обработки ошибок. Я пытаюсь вызвать функцию для чтения типа int, tryparsing, и если он не удаетсяповторный вызов функции до тех пор, пока TryParse() не будет успешным.

Моя проблема заключается в том, что ложный путь не возвращает значение, поэтому он не будет компилироваться.Я уверен, что есть простой шаг, который я пропускаю, кто-нибудь может мне помочь с некоторыми советами?Можно ли исправить эту проблему в GetNumber()?Или я должен вызывать функцию условно в пределах Main()?Что-нибудь еще?

using System;

class Program
{
    static int GetNumber()
    {
        Console.WriteLine("Enter a number");
        string entry = Console.ReadLine();

        int num;

        bool res = int.TryParse(entry, out num);

        if (res == true)
        {
            return num;
        }

        if (res == false)
        {
            Console.WriteLine("You did not enter a proper number");
            GetNumber();
        }
    }

    static void Main()
    {
        int x = GetNumber();
    }
}

1 Ответ

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

Добавьте возврат до вашего рекурсивного GetNumber. Это вернет возвращаемое значение обратно в цепочку, прежде чем в конечном итоге вернется к вашему Main методу.

Вы можете удалить второе утверждение if, так как вы будете там, только если res будет ложным. Это не влияет на функциональность, просто делает его немного легче для чтения.

static int GetNumber(){
    Console.WriteLine("Enter a number");
    string entry = Console.ReadLine();
    int num;
    bool res = int.TryParse(entry, out num);
    if (res == true){
        return num;
    }

    Console.WriteLine("You did not enter a proper number");
    return GetNumber();        
}
...