做项目学习

时间:2019-07-19 09:37:12

标签: c#

我输入了一些代码来尝试练习在编程课程中学到的知识。我的逻辑有些问题,因为我没有得到应该得到的答案。

我已经搜索并搜索了Google并重新观看了培训视频,但似乎无济于事。

namespace TenPinBowling 
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("Would you like to bowl, Y or N: ");
                var answer = Console.ReadLine();

                if (answer == "n")
                {
                    Console.WriteLine("Thanks for playing, press any to exit :)");
                    Console.ReadKey();
                    break;

                }

                Score();                
            }
        }

        static void Score()
        {

            {
                Random pins = new Random();
                var pinsKnockedDown = pins.Next(0, 10);
                //var totalScore = 0;

                Console.WriteLine("You bowled a: " + pinsKnockedDown);

                //var result = totalScore + pinsKnockedDown;

                Console.WriteLine("You're total score is: " + Tally(pinsKnockedDown));


            }
        }

        static int Tally(int score)
        {
            {
                int result = 0;
                result = result + score;
                return result;
            }
        }

    }
}

我希望我的第二种方法可以保持我的总得分,但每次都会重置为单个得分。

2 个答案:

答案 0 :(得分:6)

static int Tally(int score)
        {
            {
                int result = 0;
                result = result + score;
                return result;
            }
        }

每次调用该方法时,您都会创建一个 new 局部变量result,因此,过去得分的记录将丢失。将result设置为类的一个字段将使其在游戏过程中持续存在。最小的代码更改可能是:

private static int result = 0;

static int Tally(int score)
{
    result = result + score;
    return result;
}

答案 1 :(得分:0)

如果您不希望重置总得分,我想您总是需要跟踪总得分。现在,您总是将当前分数添加到零(在Tally中)。如果将int result放在提示之外,则应该相应地跟踪。