使用循环来写这个3+3数学问题的更好方法?

问题描述 投票:-1回答:3

我是一个C#的初学者,我想知道是否有更好的方法通过使用循环来写这个3+3数学问题,比如do while循环?

我的代码如下。

static void Main (string[] args) {
        Console.WriteLine ("What is 3+3?");
        int answer = int.Parse (Console.ReadLine ());
        int counter = 1;

        if (answer == 6) {
            Console.WriteLine ("Great! thats Correct! you've got it in the first try");
        } else {
            while (answer != 6) {
                Console.WriteLine (" Wrong, please try again");
                answer = int.Parse (Console.ReadLine ());
                counter++;

                if (answer == 6) {
                    Console.WriteLine ("Correct! Well done! you got it in {0} tries", counter);
                }
            }
        }
        Console.ReadLine ();
}

这个程序的目的是向用户提出一个问题,检查答案,然后输出一条语句,说明用户用了多少次才得到正确的答案。

如果你能给我一些建议。

c# loops math tags
3个回答
1
投票

如果你只是想要更少的代码,一个更简洁的选择,你可以选择以下任何一种。请注意,我忽略了在第一种情况和其他情况下使用稍微不同的错误信息。如果这一点很重要,那么你当然可以用一个 if (counter == 1) 语句。

第一个例子使用DoWhile,它总是至少执行一次循环,然后检查退出条件(answer == 6)在每个循环的最后。

    static void Main(string[] args)
    {
        Console.WriteLine("What is 3+3?");

        int answer;
        int counter = 0;

        do
        {
            answer = int.Parse(Console.ReadLine());
            counter++;

            if (answer == 6)
            {
                Console.WriteLine("Correct! Well done! you got it in {0} tries", counter);
            }
            else
            {
                Console.WriteLine(" Wrong, please try again");
            }
        }
        while (answer != 6);

        Console.ReadLine();
    }  

第二个例子使用了一个永远循环的while循环和break关键字,一旦满足某个条件,就会脱离循环。这样就不需要额外的if语句来摆脱讨厌的额外消息等。

    static void Main(string[] args)
    {
        Console.WriteLine("What is 3+3?");

        int answer;
        int counter = 0;

        while (true)
        {
            answer = int.Parse(Console.ReadLine());
            counter++;

            if (answer == 6)
            {
                Console.WriteLine("Correct! Well done! you got it in {0} tries", counter);
                break;
            }

            Console.WriteLine(" Wrong, please try again");
        }

        Console.ReadLine();
    }

0
投票

我对这个不是很了解,但至少,在C++中,当你失败时,我用Main();再次调用主方法,添加错误信息。

希望这能解决你的问题。


0
投票

使用dowhile会大大缩短时间。

static void Main(string[] args)
{
    int counter = 1;
    boolean hasAnswer = false;
    do {        
        Console.WriteLine("What is 3+3?");
        int answer = int.Parse(Console.ReadLine());

        if (answer == 6)
        {
            Console.WriteLine("Great! thats Correct! You've got it in " + counter + " attempt(s)");
            hasAnswer = true
        }
        else
        {
            Console.WriteLine(" Wrong, please try again");
            counter++;
        }
    } while(!hasAnswer);
}

我很久没有重写C#了,所以语法可能会有偏差,但这就是操作的要点。

© www.soinside.com 2019 - 2024. All rights reserved.