jeu de dés en java (appel d'une classe avec un constructeur)


J'essaie de faire un jeu de dés avec un dé qui peut donner un nombre aléatoire entre 1 et 6. J'ai une classe appelée Die qui se compose d'un constructeur et de deux méthodes. Le but principal des constructeurs est d'initier une valeur aléatoire et les deux méthodes doivent lancer les dés et renvoyer la valeur respectivement. Mon problème est que je ne sais pas comment lancer les dés et récupérer le numéro après avoir créé un objet.

import java.util.Random;

class Die{
    int dots,roll;
    Random number = new Random();

    public Die(){
        int dots = number.nextInt(6)+1 ;
    }

    public void roll(){
        roll = number.nextInt(dots)+1;
    }

    public int getDots(){
        return roll;
    }

}

public class Uppg1 {
    public static void main (String args[]){
        Die die = new Die();
        System.out.println("Du fick "+die.getDots());

    }
}

Il semble que mon code va au constructeur et de ne pas les méthodes. Je veux la valeur du constructeur, puis lancer les dés, puis obtenir la valeur de la méthode getDots.

Author: Luke, 2014-07-30

4 answers

Dans le constructeur Die, vous mettez à jour la variable interne dots au lieu du membre de la classe. Utilisation:

public Die(){
    dots = number.nextInt(6)+1 ;
}
 0
Author: BobTheBuilder, 2014-07-30 12:12:45
  int dots = number.nextInt(6)+1 ;

C'est une variable différente de la variable

class Die{
    int dots,roll;

Alors faites-le

dots = number.nextInt(6)+1 ;

Pour que vous obteniez la bonne valeur.

 0
Author: kirti, 2014-07-30 12:22:14

J'ai modifié le code pour vous, jetez un oeil:importer java.util.Aléatoire;

class Die{
    int dots,roll;
    Random number = new Random();

    public Die(){
         dots = number.nextInt(6)+1 ;
    }

    public void roll(){
        roll = number.nextInt(dots)+1;
    }

    public int getDots(){

        return roll;
    }

}

public class Uppg1 {
    public static void main (String args[]){
        Die die = new Die();
        die.roll();
        System.out.println("Du fick" +die.getDots());

    }
}

Supprimer int du constructeur de matrice tel qu'il est déjà défini comme global, votre prog. n'appelle pas la méthode roll nulle part donc besoin d'appeler cela.

 0
Author: Ajit, 2014-07-30 12:29:12

int dots = number.nextInt(6)+1 ne modifie pas le champ dots, mais crée une nouvelle variable dots

De plus, vous n'appelez jamais roll() donc roll=null et getDots() renvoient null.

Vous pouvez lancer les dés en appelant die.roll() dans la méthode principale Uppg1.

 0
Author: Andi, 2014-07-30 12:29:14