【问题标题】:Why are these while loops not working? Or is something else the problem?为什么这些 while 循环不起作用?还是有其他问题?
【发布时间】:2021-11-24 06:31:48
【问题描述】:

我最近刚开始使用 c#,因为这种语言正在用于大学课程。 [彩票中的头奖是通过将 1 到 30 之间的三个数字与以相同顺序抽取的三个随机数字相匹配来中奖的。 当一个球被抽出时,它会在另一个球被抽出之前放回机器中。在抽出一个球之前,机器中总是有 30 个球,玩家可以多次选择同一个球。 每周进行一次抽奖。编写一个算法,将三个数字作为输入,重复抽取三个介于 1 和 30 之间的随机数,直到出现三场比赛,然后返回赢得头奖所需的周数。——这是我必须创建的程序。没有图会不会好点。当我执行这段代码时,它会无限运行并且没有给我一个具体的答案。

][1]

使用系统;

命名空间挑战 { 课堂节目 { 静态无效主要(字符串 [] 参数) { // 彩票问题

        double num1, num2, num3;
        int week = 0;

        Console.Write("Enter the first number: ");
        num1 = Convert.ToDouble(Console.ReadLine());
        Console.Write("Enter the second number: ");
        num2 = Convert.ToDouble(Console.ReadLine());
        Console.Write("Enter the third number: ");
        num3 = Convert.ToDouble(Console.ReadLine());

        Random rnd = new Random();
        int ball1 = rnd.Next(1, 31);
        int ball2 = rnd.Next(1, 31);
        int ball3 = rnd.Next(1, 31);

        do
        {
            week++;

            do
            {
                Console.WriteLine("it took " + week + " weeks to win the jackpot");
                break;
            } while (ball1 == num1 && ball2 == num2 && ball3 == num3); 
        } while (ball1 != num1 || ball2 != num2 || ball3 != num3);

【问题讨论】:

  • 我担心代码图像不好。我们无法调试它们,使用屏幕阅读器的视力有问题的人无法访问代码,等等。
  • 预期输出?实际输出?问题是什么?
  • 还要注意“我不明白为什么它对我不起作用”并不是一个真正的问题陈述:你的代码应该做什么?实际发生了什么?你有什么错误吗?如果您这样做,请在问题中包含完整的错误消息(再次以文本形式)。

标签: c# loops while-loop


【解决方案1】:

问题是您必须将随机选择代码传递到循环中。我的意思是“用于选择随机数的行”。

【讨论】:

  • 好的,我应该把这段代码放在循环中吗? Random rnd = new Random(); int ball1 = rnd.Next(1, 31); int ball2 = rnd.Next(1, 31); int ball3 = rnd.Next(1, 31);
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 它现在给了我一个答案。但它似乎仍然是错误的,因为它是一个 5 位数字。为什么要花那么长时间才能中彩票???
  • @iqra 可能是因为您的代码需要特定顺序的球以特定顺序匹配。也就是说:如果num1=5,num2=30,num3=6 那么ball1必须等于5,ball2必须等于30,ball3必须等于6才能匹配。如果(例如)ball1 等于 30,ball2 等于 5,ball3 等于 6,那么尽管您有正确的球,但您并不认为这是一个有效的组合。
  • 其他问题:当球值为int 时,为什么您将输入读取为double?用户可以输入 5.3,但这绝不可能是结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多