Patrick C.
Patrick C.

Reputation: 11

C# recursive statement in calculator error

I've created a simple calculator previously, and now I'm trying to improve it with a bit more error handling built in. I'm trying to call a function to read an int, tryparsing, and if it fails to re-call the function until TryParse() is successful.

My issue is that the false path does not return a value so it will not compile. I'm sure there is a simple step I am missing, can anyone help me with some advice? Can this problem be fixed within GetNumber()? Or should I call the function conditionally within Main()? Anything else?

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();
    }
}

Upvotes: 0

Views: 171

Answers (1)

Steve
Steve

Reputation: 9581

Add a return before your recursive GetNumber. This will return the recursed value back up the chain before ultimately returning back to your Main method.

You can remove the second if statement entirly, since you'll only be there if res is false. This doesn't impact the functionality, just makes it a little easier to read.

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();        
}

Upvotes: 1

Related Questions