【问题标题】:C# method rollDiceC# 方法滚动骰子
【发布时间】:2017-11-23 08:11:48
【问题描述】:

您好,需要编写一个程序给定一个方法 rollDice(),它通过返回一个介于 1 和 6 之间的随机值来模拟掷骰子,在下面的代码中为 while 循环编写一个条件,使其在 double 之后结束已掷出 6(即两个骰子的值均为 6):需要您的帮助。

    using System;
{
  class Program;
  {
        int a = 0;
        int b = 0;
        while ( a==6; b==6)
        {
          a = rollDice();
          b = rollDice();
          Console.WriteLine("{0} {1}",a,b);
        }
   }
}

【问题讨论】:

  • 你的意思是while(a == 6 || b == 6)
  • @FCin 在掷出双 6 后如何停止?
  • @FCin 应该是 && 恕我直言。 @MottiCohen:需要明确说明您的问题。 SO 不是编码服务。
  • @TimothyGroote 我只是指出他的代码甚至无法编译......
  • while (a != 6 && b != 6)完成

标签: c#


【解决方案1】:

编辑: 将 while 更改为 do-while,因为无论 a 或 b 的初始值如何,它都将始终执行一次。如果你想这样或一段时间,这取决于你的喜好。

接下来,我将 while 的参数从 while (a == 6 ; b ==6) 更改为 while(!(a == 6 && b ==6)。

首先, ;在 OP 的帖子中的语法不正确,并且不起作用。它检查 a 和/或 b 是否为 6(取决于 ; 是否应该是 || 或 &&),如果是,则继续。这与期望的效果相反,因为 OP 希望循环在两者均为 6 时停止。

while(!(a == 6 && b ==6) 将检查两者是否为 6,如果是则停止循环。如果其中一个不是 6,则循环将继续。

试试这个:

int a;
int b;
//Do while because I'm assuming you always want to roll the dice at least once
    do 
    {
        a = rollDice();
        b = rollDice();
        Console.WriteLine("{0} {1}",a,b);
    } while (!(a == 6 && b == 6));

按照要求,这将掷骰子直到两者都是 6

【讨论】:

  • 您在没有解释其作用的情况下转储了工作代码。一般来说,这不是一个好的答案,尤其是当 OP 仍在学习时。他们的代码也在类中,而不是在方法中。答案不应该仅仅因为它们包含工作代码而被投票,尤其是对于这样的问题。
  • 在 OP´c 情况下,while 循环无论如何都会执行,因为他将 ab 初始化为零,而循环检查六个。因此它至少执行一次。
  • @CodeCaster 更新了我的答案以解释我的更改。
【解决方案2】:

下面的答案不正确,因为如果你滚动序列,它不会停止,例如,3 6 6。

我的建议是保留一个变量来存储上一次滚动结果,然后调用rollDice() - 如果结果为 6 并且上一次滚动也是 6,则停止,否则将新值分配给“上一次滚动”变量并继续循环。

【讨论】:

  • 他们同时掷两个骰子。
  • OP 总是掷两个骰子,所以没有顺序。
  • 嗯,是的,它说 both 骰子的值必须为 6,但实际上从未说过你必须同时掷两个骰子...
  • 如果您真的只是想同时模拟滚动两个直到达到双 6,您不妨只使用 while (Math.Random(0,36) != 35);
  • @DylanNicholson 从 OP 代码中可以明显看出这一点。在一次迭代中掷出两个骰子。
【解决方案3】:

或者试试这个:

for (int a = rollDice(), b = rollDice(); a + b < 12; a = rollDice(), b = rollDice())
{
    Console.WriteLine("{0} {1}", a, b);
}
Console.WriteLine("{0} {1}", 6, 6);

【讨论】:

  • 这不是您想向初学者展示的那种答案,因为它滥用了语言功能并且缺少任何解释。
猜你喜欢
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 2013-09-17
  • 2021-12-25
  • 1970-01-01
  • 2012-02-29
相关资源
最近更新 更多