【问题标题】:Challenges with conditions有条件的挑战
【发布时间】:2017-04-27 22:06:28
【问题描述】:

您好,我是 Java 新手,这是我必须做的: 我必须做一个得分游戏,我不会发布整个事情,因为它是无关紧要的。有两种骰子,一种有 6 面,另一种有 9 面。这是我遇到的问题:

如果您在单轮中掷出至少 5 次双 6,将会发生以下情况:

  • 随机掷骰子(10 到 30 次之间)

  • 所有这些骰子的累积产品被添加到银行中

我不太明白这里的措辞,除了这一部分,我已经完成了整个程序。这就是我所做的:

if (ninedice == 6 && sixdice == 6 >= 5){
    ninedice = (int) Math.ceil(Math.random () * (30-10)+ 10);
    sixdice = (int) Math.ceil(Math.random () * (30-10)+10);
    accountpoints = ninedice+sixdice;
}

这显然是不正确的,我没有得到想要的结果,因为它只是没有随机掷骰子,也没有在帐户中添加积分。非常感谢您的任何帮助,并在此先感谢您!

【问题讨论】:

  • 你了解循环了吗?
  • 有点是,但不是高级循环
  • 当它询问所有卷的乘积时,是否包括双六?
  • 它没有指定但是是的
  • 我明白了,我的回答是否解决了您的问题?

标签: java user-interface netbeans dice


【解决方案1】:

你想要更像这样的东西:

rollDice();

if (nineDice == 6 && sixDice == 6)
{
  myDiceCondition++;
}

if (myDiceCondition >= 5)
{
  // get random number between 10 and 30
  // loop for that amount
    // roll both dice
    // add to account balance?
}

【讨论】:

  • 没问题。编码愉快!
【解决方案2】:

您的 if 语句计算结果为:(true/false && true/false >= 5)。您需要将 5 与 int 进行比较。您是否在跟踪掷出双 6 的次数?像这样的东西应该可以工作:

public static void diceExample(){

    int ninedice, sixdice, accountpoints, rolledDoubleSix;

    if (ninedice == 6 && sixdice == 6) {
        rolledDoubleSix++;
    }

    if (rolledDoubleSix == 5){
        ninedice=(int)Math.ceil(Math.random () * (30-10)+ 10);
        sixdice=(int)Math.ceil(Math.random () * (30-10)+10);
        accountpoints = ninedice+sixdice;

    }
}

【讨论】:

    【解决方案3】:

    所以你在正确的轨道上,但还没有完全到达那里。 if 语句条件应该只是if (ninedice == 6 && sixdice == 6)。不需要>= 5 部分。这个 if 语句表示是否每个骰子的第一次掷骰结果为 6。但是,if 语句体有一些逻辑问题。 这段代码,

    ninedice = (int) Math.ceil(Math.random () * (30-10)+ 10);
    sixdice = (int) Math.ceil(Math.random () * (30-10)+10);
    

    生成两个骰子将再次滚动的次数。但是,ninedicesixdice 代表第一卷,所以不要覆盖它们。替换为,

    int ninedicerolls = (int) Math.ceil(Math.random () * (30-10)+ 10);
    int sixdicerolls = (int) Math.ceil(Math.random () * (30-10)+10);
    

    现在保留一个产品变量来跟踪每个模具的每个滚动,

    int ninediceproduct = ninedice;
    int sixdiceproduct = sixdice;
    while(ninediceproduct > 0){
        ninediceproduct *= (int) Math.ceil(Math.random () * (9-1)+ 1);
        ninediceproduct--;
    }
    while(sixdiceproduct > 0){
        sixdiceproduct *= (int) Math.ceil(Math.random () * (6-1)+ 1);
        sixdiceproduct--;
    }
    

    然后,将乘积相乘,

    int cumulative = sixdiceproduct * ninediceproduct;
    

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 2020-10-05
      • 2013-12-21
      • 2014-12-21
      • 2018-01-21
      • 1970-01-01
      • 2020-05-06
      • 2020-01-16
      相关资源
      最近更新 更多