C#中的数字猜谜游戏

时间:2018-09-30 23:00:24

标签: c#

我正在Visual Studio中研究c#中的二进制搜索。我在有关计算机的项目中找到了用户的猜测编号。因此,我在主体中使用了该代码;

MyView.as_view(queryset=MyModel.objects.filter(enabled=True))

但是,在用户写完任何东西后,输出总是会重复,为什么会这样,为什么仍然要获取数字?

2 个答案:

答案 0 :(得分:3)

根据您的描述,我认为您需要让用户在循环结束时向guess_number变量输入新值,否则循环将不会从条件guess_number != 0结束。

do
{
    counter += 1;
    if (guess_number == 2)
    {
        min = middle + 1;
    }
    else if (guess_number == 1)
    {
        max = middle - 1;
    }
    else if (guess_number != 1 || guess_number != 2 || guess_number != 0)
    {
        Console.WriteLine(" Please write 0, 1 or 2 " + name);
    }
    middle = (min + max) / 2;
    Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");

    Console.WriteLine(counter + " times I tried for finding your number ");

    input = Console.ReadLine();  // let user key in new value.
    guess_number = Convert.ToInt32(input);

} while (guess_number != 0);

答案 1 :(得分:2)

最后一个readKey应该在while内。

do
        {
            counter += 1;

            if (guess_number == 2)
            {
                min = middle + 1;
            }
            else if (guess_number == 1)
            {
                max = middle - 1;
            }
            else if (guess_number != 1 || guess_number != 2 || guess_number != 0)
            {
                Console.WriteLine(" Please write 0, 1 or 2 " + name);
            }
            middle = (min + max) / 2;
            Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");

            input = Console.ReadLine();
            guess_number = Convert.ToInt32(input);

            Console.WriteLine(counter + " times I tried for finding your number ");
        } while (guess_number != 0);