Bonjour à tous! 
Pourriez-vous me donner un peu d'aide ?
Depuis 3 jours je bloque sur une erreur que je ne comprend pas.
J'ai essayé de modifier mon code à au moins 10 reprises, mais rien il n'y a rien à faire j'ai toujours cette fameuse erreur : java.lang.NullPointerException.
Pourrivez-vous me dire comment m'en débarrasser ?
Eclipse m'indique que l'erreur vient de cette ligne :
if((carte.couleur.equals(couleur)==true) & (carte.hauteur.equals(hauteur)==true))
Pour résumer : mon code sert à générer automatiquement 52 cartes -uniques-. Et avant de générer une nouvelle carte, je regarde si la carte n'est pas déjà présente dans la liste dans laquelle j'ajoute les cartes générées. (mon HashTable)
Merci pour votre aide !! 
Voici mon code (ça peut toujours servir
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| import java.util.Hashtable;
public class TestDistributionCartes {
public static void main (String args[]) {
String hauteur,couleur = null;
Hashtable<Integer, Carte> cartesGenerees = new Hashtable(); // contiendra la liste des cartes déjà génerées
// afin de de ne pas générer deux fois la même carte, on regardera dans ce hashtable
// génère 15 cartes aléatoires
for(int i=0;i<51;i++) {
int chiffeEntreUnetQuatre = (int) Math.round(10*Math.random()%4);
while(chiffeEntreUnetQuatre==0) {
chiffeEntreUnetQuatre = (int) Math.round(10*Math.random()%4);
}
int chiffeEntreUnetTreize = (int) Math.round(100*Math.random()%13);
while(chiffeEntreUnetTreize==0) {
chiffeEntreUnetTreize = (int) Math.round(100*Math.random()%13);
}
hauteur = String.valueOf(chiffeEntreUnetTreize);
if(chiffeEntreUnetTreize==11) { hauteur = "Valet";}
if(chiffeEntreUnetTreize==12) { hauteur = "Dame";}
if(chiffeEntreUnetTreize==13) { hauteur = "Roi";}
if(chiffeEntreUnetTreize==1) { hauteur = "As";}
if(chiffeEntreUnetQuatre==1) { couleur = "Coeur";}
if(chiffeEntreUnetQuatre==2) { couleur = "Carreau";}
if(chiffeEntreUnetQuatre==3) { couleur = "Pique";}
if(chiffeEntreUnetQuatre==4) { couleur = "Trefle";}
System.out.println("\n"+hauteur+"\t"+couleur);
// vérifie que la carte n'est pas déjà dans la liste "cartesGenerees" avant de l'y ajouter
if(i==0) { cartesGenerees.put(i, new Carte(hauteur,couleur)); }
else {
int taille = cartesGenerees.size();
Carte carte = null;
boolean carteTrouvee = false;
for(int j=0;j<taille;j++) {
carte = (Carte)cartesGenerees.get(j);
// si la hauteur et la couleur générées sont déjà dans la HashTable, alors...
if((carte.couleur.equals(couleur)==true) & (carte.hauteur.equals(hauteur)==true)) {
carteTrouvee=true;
System.out.println("#->"+carte.hauteur+"\t"+carte.couleur);
}
else {
System.out.println("->"+carte.hauteur+"\t"+carte.couleur);
}
}
//*
System.out.println("carteTrouvee = "+carteTrouvee);
if(carteTrouvee==false) {
System.out.println("On ajoute la carte "+hauteur+" de "+couleur+". i:"+i);
cartesGenerees.put(i, new Carte(hauteur,couleur));
}
if(carteTrouvee==true) {
System.out.println("on n'ajoute rien...");
}
//*/
}
}
}
} |
Partager