条件挑战
Challenges with conditions
你好,我是 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;
}
这显然是不正确的,我没有得到想要的结果,因为它不会随机掷骰子次数,也不会在帐户中添加积分。非常感谢任何帮助,并提前感谢您!
你想要更像这样的东西:
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?
}
您的 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;
}
}
所以您走在正确的轨道上,但还不完全正确。 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);
生成两个骰子将要再次滚动的次数。但是,ninedice
和 sixdice
代表第一卷,所以不要覆盖它们。将其替换为,
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;
你好,我是 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;
}
这显然是不正确的,我没有得到想要的结果,因为它不会随机掷骰子次数,也不会在帐户中添加积分。非常感谢任何帮助,并提前感谢您!
你想要更像这样的东西:
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?
}
您的 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;
}
}
所以您走在正确的轨道上,但还不完全正确。 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);
生成两个骰子将要再次滚动的次数。但是,ninedice
和 sixdice
代表第一卷,所以不要覆盖它们。将其替换为,
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;