首页 > 解决方案 > 这个 do while 循环一直在进行,我无法停止

问题描述

我正在尝试制作一个游戏,您必须选择一个随机数,计算机会告诉您您是否正确。但是在我拥有的代码中,循环将继续执行 if 命令中的内容。如果我试图打破它,它只会做它的 while 部分。我希望能够输入一个数字,告诉你它是否正确,然后让你再次猜测。谢谢您的帮助!另外,请忽略部分代码不计为代码的方式。我无法让它进入代码部分,我也没有很努力。也很抱歉变量名异常。

using System;
using System.Threading;
namespace newProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("useless intro");

            int shortOut;
            Random rnd = new Random();
            int daNumber = rnd.Next(9);
            string userNumber = Console.ReadLine();


            bool isParsable = Int32.TryParse(userNumber, out shortOut);
            if (isParsable)
            {
                do
                {
                    if (shortOut != daNumber)
                    {
                        Console.WriteLine("no");
                    }
                } while (shortOut != daNumber);
                Console.WriteLine("that's it yeah");
            }
        }
    }
}

标签: c#

解决方案


您的代码只要求用户输入一次。然后它检查它是否是一个int,如果是,它然后启动永远不会改变变量的循环。它会永远循环下去。

您需要反复询问用户的输入,直到他们猜对为止。要求输入需要在循环中。只有当他们做对了,你才应该跳出循环。

这是我的做法:

Random rnd = new Random();

//choose a number between 0 and 8 inclusive
int daNumber = rnd.Next(9);

// start with a value that the user would never enter
int daGuess = int.MinValue;

//loop if the two numbers are not the same
while (daGuess != daNumber)
{
    Console.WriteLine("Enter your guess:");
    if (int.TryParse(Console.ReadLine(), out daGuess))
    {
        if (daGuess != daNumber)
        {
            Console.WriteLine("no");
        }
        else
        {
            Console.WriteLine("that's it yeah");
        }
    }
}

推荐阅读