所以我有一个骰子滚动程序似乎到目前为止工作,但唯一的问题是我无法弄清楚如何总结卷的输出。它再次滚动骰子,同时总结前一次滚动。
这是我用
开始的Die类public class Die{ //only thing changed was removing implementation of the interface
private int noFaces;
public Die() {
noFaces = 6;
}
public int getNoFaces() { //getter
return noFaces;
}
public Die(int noFaces) { //setter, sets new value according to passed parameter
this.noFaces = noFaces;
}
public int roll() { //generates random number+1 within specified "noFaces" range
return (int) (Math.random() * noFaces + 1);
}
public void printRoll() { //goes to above method roll() and prints the returned value
System.out.println(roll());
}
}
将一个Die变成PairOfDice,这就是我遇到求和问题
public class PairOfDice {
private Die d1, d2;
public PairOfDice() { //initializes 2 die objects
d1 = new Die();
d2 = new Die();
}
public PairOfDice(int noFaces) { //sets the dice equally
d1 = new Die(noFaces);
d2 = new Die(noFaces);
}
public PairOfDice(int noFaces1, int noFaces2) { //sets dice separately
d1 = new Die(noFaces1);
d2 = new Die(noFaces2);
}
public void printRoll() { //prints rolls
System.out.println("Die 1 returned: " + d1.roll());
System.out.println("Die 2 returned: " + d2.roll());
}
public void printRollSum(){ //print sum of both rolls
System.out.println("Sum of both dice rolls are: " + (d1.roll() + d2.roll()));
}
}
我在哪里获得输出,RollingDice
public class RollingDice {
public static void main(String[] args) {
PairOfDice pairOne = new PairOfDice();
pairOne.printRollSum();
System.out.println();
PairOfDice pairTwo = new PairOfDice(10);
pairTwo.printRoll();
pairTwo.printRollSum();
System.out.println();
PairOfDice pairThree = new PairOfDice(100, 3);
pairThree.printRoll();
pairThree.printRollSum();
}
}
对我的计划或评论的所有帮助表示赞赏,我还在学习。谢谢!
答案 0 :(得分:3)
你得到了两个骰子的总和,但你每次都掷骰子。 printRoll()
滚动并显示值,然后printRollSum()
再次滚动它们,为您提供不同的值。
答案 1 :(得分:0)
方法roll()
每次调用时都会生成一个新的随机数,因此当您拨打printRoll()
和printRollSum()
时,您每次都会收到新的号码。
您需要将roll
的结果存储在其中一个类中,然后提供一种方法来访问这些结果。
答案 2 :(得分:0)
作为解决方案,您可以将最后滚动的值存储在Die
类中(类似于noFaces
,但例如将其称为lastValue
),然后更改printRollSum()使用getLastValue()
代替roll()
答案 3 :(得分:0)
每次调用printRoll
和printRollSum
时,它都会生成新的数字。您应该将这两种方法结合起来,或者至少将骰子的当前值存储在骰子中,然后通过printRollSum
答案 4 :(得分:0)
你的每个printRoll()和printRollSum()调用都是重新滚动骰子。如果您想要掷骰子,打印每个骰子的面值,然后打印这两个面值的总和,您需要存储卷的结果,然后对这些结果执行求和计算。例如:
public class PairOfDice {
private Die d1, d2;
int lastRollD1;
int lastRollD2;
public PairOfDice() { //initializes 2 die objects
d1 = new Die();
d2 = new Die();
}
public PairOfDice(int noFaces) { //sets the dice equally
d1 = new Die(noFaces);
d2 = new Die(noFaces);
}
public PairOfDice(int noFaces1, int noFaces2) { //sets dice separately
d1 = new Die(noFaces1);
d2 = new Die(noFaces2);
}
public void roll()
{
lastRollD1 = d1.roll();
lastRollD2 = d2.roll();
}
public void printRoll() { //prints rolls
System.out.println("Die 1 returned: " + lastRollD1);
System.out.println("Die 2 returned: " + lastRollD1);
}
public void printRollSum(){ //print sum of both rolls
System.out.println("Sum of both dice rolls are: " + (lastRollD1 + lastRollD1));
}
}
在此版本中,您的RollingDice将调用:
pairOne.roll();
pairOne.printRoll();
pairOne.printRollSum();