【问题标题】:Do... While loop counter implementation not working做...而循环计数器实现不起作用
【发布时间】:2015-09-26 12:27:15
【问题描述】:

我在C#(控制台应用程序)中创建了一个程序,提示用户输入“2+2=?”的答案,如果正确则弹出消息“做得好”,否则“请重试” ”。我想做的是让程序告诉用户在得到正确答案之前他们做了多少次猜测/尝试。

这是我到目前为止所做的

class Program
{
    public static int correct_answer, counter,  user_answer, counterUpdated;

    static void Main(string[] args)
    {
        correct_answer = 4;

        do 
        {
            counter = 1;
            counterUpdated = counter++;

            Console.WriteLine("2+2= ?");
            user_answer = Convert.ToInt32(Console.ReadLine());

            if (user_answer != correct_answer)
            {
                Console.Clear();
                Console.WriteLine("Wrong, try againg" + " this is your " + counterUpdated + " try.");
            }
        } while (user_answer != correct_answer); // The code will keep looping until the user prompts the correct answer 

        Console.Clear();
        Console.WriteLine("Well Done! you did it in this amount of guesses " + counterUpdated);
        Console.ReadLine();
    }
}

如果有人能告诉我如何使计数器工作,那就太好了。

【问题讨论】:

  • 不要将变量声明为静态字段。这不是一个好习惯

标签: c# do-loops


【解决方案1】:

您总是在循环开始时将 counter 设置为 1,然后立即将 counterUpdated = counter++; 设置为 1(无论如何这有点奇怪......)。 只需使用一个在循环外初始化并在循环内递增的计数器即可。

int guessNumber = 0;
do {
    guessNumber++;
    // ...

【讨论】:

    【解决方案2】:

    稍作调整,这应该可以工作:)

    class Program
    {
        public static int correct_answer, counter,  user_answer;
    
        static void Main(string[] args)
        {
            correct_answer = 4;
            counter = 0;
            do 
            {
    
                counter++;
    
                Console.WriteLine("2+2= ?");
                user_answer = Convert.ToInt32(Console.ReadLine());
    
                if (user_answer != correct_answer)
                {
    
                    Console.Clear();
                    Console.WriteLine("Wrong, try againg" + " this is your " + counter+ " try.");
    
                }
    
    
    
            } while (user_answer != correct_answer); // The code will keep looping until the user prompts the correct answer 
            Console.Clear();
            Console.WriteLine("Well Done! you did it in this amount of guesses " + counter);
            Console.ReadLine();
    
    
    
        }
    }
    

    我所做的是我删除了counterUpdated 变量并让counter 变量完成所有计数工作:)

    希望对您有所帮助:)

    【讨论】:

    • counter替换counterUpdated...你删除了counterUpdated,但你忘记用counter替换那个。在 Console.WriteLine 中查看您的代码
    • @M.kazemAkhgary 是的 :) 已修复 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多