-1

I am fairly new to programming. I've heard that using GOTO statements is not good. so i would appreciate any recommendations on what to use instead.Thanks for helping.

    Start:
        Random numGen = new Random();
        int num = numGen.Next(1, 101);
        Console.WriteLine("Guess the number between 1 and 100");
        Console.Write("Your answer: ");
    fail:
        int answer = Convert.ToInt32(Console.ReadLine());
        if (answer == num)
        {
            Console.WriteLine("Congratulations,the number was " + num);
            Console.WriteLine();
            goto Start;
        }

        else if (answer > num)
        {
            Console.WriteLine("Lower");
            goto fail;
        }
        else
        {
            Console.WriteLine("Higher");
            goto fail;
        }
Rashad
  • 67
  • 1
  • 5

2 Answers2

2

You could rewrite this, for example, to use a loop:

Random numGen = new Random();
int num = numGen.Next(1, 101);
Console.WriteLine("Guess the number between 1 and 100");
Console.Write("Your answer: ");

while(true) 
{
    int answer = Convert.ToInt32(Console.ReadLine());
    if (answer == num)
    {
        break;
    }

    if (answer > num)
    {
        Console.WriteLine("Lower");
    }
    else
    {
        Console.WriteLine("Higher");
    }
}

Console.WriteLine("Congratulations,the number was " + num);
Console.WriteLine();
CompuChip
  • 9,143
  • 4
  • 24
  • 48
2

I wouldn't say that Gotos are "always" a bad idea but wherever possible try to avoid them.

Here's a simplified version of your code:

var random = new Random();
while (true)
{
    var number = random.Next(1, 101);
    Console.WriteLine("Guess the number between 1 and 100");
    Console.Write("Your answer: ");
    int answer;
    while ((answer= Convert.ToInt32(Console.ReadLine())) != number)
    {
        Console.WriteLine(answer > number ? "Lower" : "Higher");
    }
    Console.WriteLine("Congratulations,the number was " + number);
    Console.WriteLine();
}
Nathan
  • 1,303
  • 12
  • 26