2017-08-09 5 views
3

Je veux écrire un programme où je lance deux dé, jusqu'à ce que la somme de ces dés soit de 11. Je veux enregistrer combien de "tentatives" ou de jets de dés je le temps que je suis la somme de 11Java: lancer deux dés jusqu'à obtenir la somme désirée

Mon code à ce jour:

public class Dice { 

    public static void main(String[] args) { 

    int counter1 = 0; //Amount of rolls player 1 took to get sum of 9 
    int P1sum = 0; 

    do { 
     int P1Die1 = (int)(Math.random()*6)+1; 
     int P1Die2 = (int)(Math.random()*6)+1; 
     P1sum = (P1Die1 + P1Die2); 
     counter1++; 
    } while (P1sum == 11); 

     System.out.println("Player 1 took "+counter1+" amount of rolls to have a sum of 11."); 
    } 
} 

il ne cesse l'impression qu'il a fallu 1 rouleau pour obtenir une somme de 11, donc quelque chose qui ne va pas.

Mon but: Demander au joueur 1 de continuer à lancer 2 dé jusqu'à ce que j'obtienne une somme de 11, et d'enregistrer le nombre d'essais qu'il a fallu. Ensuite, faites en sorte que le joueur 2 fasse de même. Ensuite, quel que soit le joueur qui a le moins d'essais, "gagne" la partie.

aide appréciée grâce im un débutant

+6

Votre état est mauvais, il devrait être '' tout au lieu de 'while (P1sum == 11) (P1sum = 11!) ' – spuente

Répondre

8

Vous pouvez mettre à jour votre état

while (P1sum == 11) // this results in false and exit anytime your sum is not 11 

à

while (P1sum != 11) // this would execute the loop until your sum is 11 
1

Tenir compte, que Math.random() numéro de retour à virgule flottante 0 <= x <= 1.0 (Java API docs Math.random()) . Ainsi, la valeur maximale de votre formule:

(int)(Math.random()*6)+1; 

égal à 7.