Owais Ahmed Khan
Owais Ahmed Khan

Reputation: 268

C# re-enter value after wrong input instead of restarting the program

so I am trying to make a multiplication table with c#, and I want that when user give a wrong input in code it should not start the program from start but just ask to re-enter that value. when I run this code and put wrong input. it will ask to display the multiplication table again. but I want that if I give wrong input at "start value" then it will only ask for re-entering the start value but not the whole input

public void Multi()
{
    Console.Write("\n\n");
    bool tryAgain = true;
    while (tryAgain)
    {
        try
        {

            Console.Write("Display the multiplication table:\n ");
            int t = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("\n");
            Console.WriteLine(" Start value ");

            Console.WriteLine("\n");
            Console.WriteLine(" End value \n");
            int end = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("\n");
            SwapNum(ref start, ref end);
            Console.Write("\n");
            Console.WriteLine("Display the table\n");
            int i = start;

            do
            {
                Console.WriteLine(t + " * " + i + " = " + t * i);
                //Console.WriteLine("{0} * {1} = {2}", t, i, t*i);
                i++;
            } while (i <= end);

        }

        catch (Exception ex)
        {
            Console.WriteLine("Please Enter the inter number ");
        }
    }
}
static void SwapNum(ref int x, ref int y)
{

    if (x >= y)
    {
        int temp = x;
        x = y;
        y = temp;
    }
}

Upvotes: 0

Views: 1774

Answers (1)

Dmitrii Bychenko
Dmitrii Bychenko

Reputation: 186803

Change Parse into TryParse; let's extract a method for this

  private static int ReadInt(string prompt) {
    while (true) {
      Console.WriteLine(prompt);

      int result;

      if (int.TryParse(Console.ReadLine(), out result))
        return result;

      Console.WriteLine("Sorry, it's not a correct integer value, please try again.");
    }
  }

  ...

  public void Multi() {
    Console.Write("Display the multiplication table:\n ");

    // Now we keep asking user until the correct value entered 
    int t = ReadInt("Start value");
    ...
  } 

Upvotes: 2

Related Questions