为什么这个程序在猜了两次之后就停止运行了?

本文关键字:之后 两次 运行 程序 为什么 | 更新日期: 2023-09-27 18:16:39

我正在创建一个简单的c#控制台应用程序游戏,它创建一个随机数,然后显示"太高","太低"或"正确",然后应该要求用户输入另一个数字&然后告诉他们这个数字是"太高","太低"还是"正确",一旦猜对了,它应该说"正确",然后显示猜对了多少次才得到正确的数字(这部分我不知道怎么做)。除此之外,我还创建了代码&它会告诉你你的猜测是过高还是过低,一旦你尝试输入第二个猜测,它就会自动显示它是正确的。如何让程序读取更多的猜测,以及如何显示猜测的次数?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _5.Number_Game
{
    class Program
    {
        static void Main(string[] args)
        {
            double response, guess;  
            Random random = new Random();
            int randomNumber = random.Next(1, 101);
        do
        {
            Console.WriteLine("Enter your guess for a random number between 1 & 100");
            guess = double.Parse(Console.ReadLine());
            if (guess > randomNumber)
                Console.WriteLine("Too high");
            if (guess < randomNumber)
                Console.WriteLine("Too low");
            if (guess == randomNumber)
                Console.WriteLine("Correct!");
             Console.WriteLine("Enter another number");
             response = double.Parse(Console.ReadLine());
        }
        while (response <= 1 && response >=100);
        Console.WriteLine("Correct, Goodbye!");
        Console.ReadLine();
        }
    }
}

为什么这个程序在猜了两次之后就停止运行了?

你的"while"条件不正确,它目前检查数字是否在1-100范围内,而它应该检查它是否是正确的数字。

我会把它改成:

while(guess != randomNumber); 

或在正确值上时中断:

if (guess == randomNumber)
{
    Console.WriteLine("Correct!");
    break;
}

我还会注意到,一旦你修复了你的算法,你的"响应"值目前是无用的。

您不需要将您的猜测作为双精度,因为随机数只会生成整数。此外,也不需要响应变量,因为循环可以循环到:

while(guess != randomNumber);

就像上面说的答案。如果您想添加一个计数,表示用户猜了多少次才猜出数字,请在开始的'do'循环之前添加一个计数变量。

int count = 0;
do
{

当用户每次猜错时,它会将计数加1,就像这样:

if (guess > randomNumber)
{
Console.WriteLine("Too high");
count += 1;
}
if (guess < randomNumber)
{
Console.WriteLine("Too low");
count += 1;
}

最后当用户猜对时

if (guess == randomNumber)
{
 Console.WriteLine("Correct!");
 Console.WriteLine("You took " + count + "guesses, to guess that number.");
}