代码之家  ›  专栏  ›  技术社区  ›  YungOne

为什么我的代码每次都不增加一个变量?[关闭]

c#
  •  -6
  • YungOne  · 技术社区  · 7 年前

    class Program
    {
        static void Main(string[] args)
        {
            Start:
    
            int attempt = 0;
            int numberOfAttempts = 0;
            int amountOfMoney = 0;
    
            Random numberGen = new Random();
    
            while (attempt != 6)
            {
                attempt = numberGen.Next(1, 7);
                Console.WriteLine("Tom rolled: " + attempt + ".");
                numberOfAttempts++;
            }
    
            Console.WriteLine("It took tom " + numberOfAttempts + " attempts to roll a six");
    
            if(numberOfAttempts <= 6)
            {
                amountOfMoney++;
                Console.WriteLine("You now have " + amountOfMoney + " dollars");
            }
    
            if(numberOfAttempts > 6)
            {
                amountOfMoney--;
                Console.WriteLine("You now have " + amountOfMoney + " dollars");
            }
    
            Console.ReadKey();
    
            goto Start;
        }
    }
    

    2 回复  |  直到 7 年前
        1
  •  6
  •   maccettura    7 年前

    您应该使用可用的工具来解决这个问题(即 调试器

    你所拥有的代码非常接近你所需要的。但是你的问题是 goto

    让我非常清楚地说: 去是很不好的练习

    goto Start;
    

    它到达你的最顶端 Main() 方法,接下来的3行声明变量并将其设置为 0

    你需要移除 转到 像你一样利用循环 正在做。然后在循环迭代中放置要持久化的变量 你的新循环:

    int amountOfMoney = 0;
    
    while(someCondition)
    {
        //game logic here
        amountOfMoney++;
    }
    
    //amountOfMoney has not reset every loop and now has all the changes you made to it
    Console.WriteLine(amountOfMoney);
    

    使用新的循环,你需要想出一个退出条件。它是一个退出循环(和游戏)的用户输入,是一个固定的循环数吗? for 循环)。这取决于你。。。

    I made a simple "coin-flip" game here

        2
  •  -1
  •   John Wu    7 年前

    我回答是因为这是一个非常棒的可教时刻。您提供的是一个非常常见的 一个未经文本化的新词。此标签:

    Start:
    

    不管是谁写的。。。

    int attempt = 0;
    int numberOfAttempts = 0;
    int amountOfMoney = 0;
    

    …以为这是比赛的开始。

    不管是谁写的。。。

    goto Start;
    

    …以为这是

    要解决这个问题,请使标签更具体,并将其放在正确的位置。

    goto 并提出退出条件。但我觉得这些教训没那么值钱。