J'ai corrigé mon problème en changeant la classe Die pour simplement retourner des valeurs au lieu de les imprimer, en changeant le PairOfDice pour avoir une méthode qui stocke les valeurs retournées. Voici le code de travail. Merci pour tout le monde.Somme de deux jets de dés en Java [résolu]
public class Die{ //only thing changed was removing implementation of the interface, added getRoll for summing values, deleted printRoll
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 int getRoll(){ //creates roll value to be returned
int i = roll();
return i;
}
}
classe PairOfDice
public class PairOfDice {
private Die d1, d2;
int lastRollOne;
int lastRollTwo;
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 getLastRolls(){ //stores last rolls for summation
lastRollOne = d1.getRoll();
lastRollTwo = d2.getRoll();
}
public void printRoll() { //prints rolls
getLastRolls();
System.out.println("Die 1 returned: " + lastRollOne);
System.out.println("Die 2 returned: " + lastRollTwo);
System.out.println("The sum of Die 1 and Die 2 are : " + (lastRollOne + lastRollTwo));
}
}
classe RollingDice
public class RollingDice {
public static void main(String[] args) {
PairOfDice pairOne = new PairOfDice();
pairOne.printRoll();
System.out.println();
PairOfDice pairTwo = new PairOfDice(10);
pairTwo.printRoll();
System.out.println();
PairOfDice pairThree = new PairOfDice(100, 3);
pairThree.printRoll();
}
}
sortie récente
Die 1 returned: 4
Die 2 returned: 1
The sum of Die 1 and Die 2 are : 5
Die 1 returned: 9
Die 2 returned: 3
The sum of Die 1 and Die 2 are : 12
Die 1 returned: 93
Die 2 returned: 3
The sum of Die 1 and Die 2 are : 96
Donc, vous voulez 'printRoll()' et 'printRollSum()' utiliser les mêmes numéros, est que la question ? Si c'est le cas, vous devez stocker le résultat des jets b/c chaque jet générera un nouveau nombre aléatoire. –
Chaque fois que 'roll()' est appelé, un nouveau numéro est généré. – bowmore