Mon programme ne marche pas
Résolu
LearnDeep
Messages postés
70
Statut
Membre
-
LearnDeep Messages postés 70 Statut Membre -
LearnDeep Messages postés 70 Statut Membre -
Bonjour,
je suis en train de faire ce exercice mais j'ai rencontré des problèmes , j'ai essayé tout ce que je peux mais
je ne sais pas vraiment ce que je dois faire
ici mon travail

classe Roue
classe BanditMachot
classe TestBanditMachot
je suis en train de faire ce exercice mais j'ai rencontré des problèmes , j'ai essayé tout ce que je peux mais
je ne sais pas vraiment ce que je dois faire
ici mon travail
classe Roue
package pack8;
public class Roue {
int aleatoire;
public void lance()
{
aleatoire= 0 + (int)(Math.random() * ((4 - 0) + 1));
}
public int get()
{
return this.aleatoire;
}
}
classe BanditMachot
package pack8;
public class BanditMachot {
static Roue [] tab;
static int gain;
public BanditMachot()
{
Roue [] tab =new Roue [4];
}
public static int joue()
{
//declaration variables
int[] numberofoccurance=new int [4];
int [] elements=new int[4];
int forElements=0;
boolean trouve;
int j=0;
gain=0;
//traitement
numberofoccurance[0]=1;
elements[0]=tab[0].get();
for (int i=1;i<4;i++)
{
trouve=false;
j=0;
while((j<i)&&(trouve==false))
{
if((tab[i].get()==elements[j]))
{
trouve=true;
numberofoccurance[i]+=1;
}
else
{
j=j+1;
}
if(trouve==false)
{
forElements=forElements+1;
elements[forElements]=tab[i].get();
numberofoccurance[forElements]+=1;
}
}
}
for(int c=0;c<forElements;c++)
{
if(numberofoccurance[c]==2)
{
gain=10;
}
else
if(numberofoccurance[c]==3)
{
gain=100;
}
else
if(numberofoccurance[c]==4)
{
gain=1000;
}
else
{
gain=0;
}
}
return gain;
}
}
classe TestBanditMachot
package pack8;
public class TestBanditMachot {
public static void main(String[] args) {
// TODO Auto-generated method stub
BanditMachot bm=new BanditMachot();
BanditMachot.joue();
}
}
Configuration: Windows / Opera Next 56.0.3051.116
2 réponses
-
Bonjour,
"Mon programme ne marche pas" c'est vague... mais dans la mesure où tu as une exception, il aurait été plus pertinent de l'indiquer, c'est quand même là dessus qu'il faut partir :
Exception in thread "main" java.lang.NullPointerException at pack8.BanditMachot.joue(BanditMachot.java:27) at pack8.TestBanditMachot.main(TestBanditMachot.java:10)
DoncBanditMachot.java:27
c'estelements[0]=tab[0].get();
et leNullPointerException
vient du fait quetab
vautnull
, cela vient de plusieurs maladresses au début de ta classe :
package pack8; public class BanditMachot { static Roue [] tab; static int gain; public BanditMachot() { Roue [] tab =new Roue [4]; } public static int joue() {
Dans le constructeur tu faisRoue [] tab =new Roue [4];
c'est à dire que tu déclares une variable locale au constructeur qui s'appelletab
et qui est correctement initialisée, mais qui ne sera utilisée nul part ailleurs dans le programme puisqu'elle est locale...
De toute façon le constructeur ne sert à rien, parce que la méthodejoue()
eststatic
.
Donc c'est le tableaustatic Roue [] tab
qui va être considéré, or celui-ci n'est pas initialisé, il vaut doncnull
, d'où leNullPointerException
.
Remarque : même sitab
avait été initialisé avecnew Roue [4];
comme tu as essayé de faire, c'est seulement le tableau qui aurait une valeur, mais chacune de ses cases vaudraitnull
, donctab[0].get();
aurait provoqué une autreNullPointerException
puisquetab[0]
seraitnull
aussi.
Un début pour ta classe :
package pack8; public class BanditMachot { private final Roue[] roues; private int gain; public BanditMachot(int nbRoues) { roues = new Roue[nbRoues]; for (int i = 0; i < nbRoues; i++) { roues[i] = new Roue(); } } public int joue() { -
Merci beaucoup Monsieur
mais je pense que je dois metttre ceci
public BanditMachot(int nbRoues) {
roues = new Roue[nbRoues];
for (int i = 0; i < nbRoues; i++) {
roues[i] = new Roue().lance().get();
}
}
est ce que correct?? pourque chacque roue initialise avec le nombre aleatoire de la classe Roue membre aleatoire?