Bonjour,
J'ai un problème qui vient vraisemblablement d'un conflit de mémoire entre plusieurs variables, je butte sur ce problème depuis plus d'une semaine, j'ai demandé de l'aide a plusieurs amis meilleurs que moi en java, j'ai fait beaucoup de recherche sur google mais rien a faire...
Voici le bout de code qui ne marche pas:
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
| if(listeSituations.size() > 0)
{
System.out.print("1: " + ((MorpionSituation) listeSituations.get(0)).getSituation() + "\n1: ");
displayLine(((MorpionSituation) listeSituations.get(0)).getSituation());
}
int[] temp = new int[10];
if(listeSituations.size() > 0)
temp = ((MorpionSituation) listeSituations.get(0)).getSituation();
displayLine(temp);
plateau[position] = joueur;
displayLine(temp);
if(listeSituations.size() > 0)
((MorpionSituation) listeSituations.get(0)).setSituation(temp);
if(listeSituations.size() > 0)
{
System.out.print("2: " + ((MorpionSituation) listeSituations.get(0)).getSituation() + "\n2: ");
displayLine(((MorpionSituation) listeSituations.get(0)).getSituation());
} |
La fonction displayLine sert a afficher un tableau:
1 2 3 4 5 6 7
| public static void displayLine(int[] pla)
{
for(int i : pla)
System.out.print(i);
System.out.print("\n");
} |
plateau est un int[] static déclaré en dehors de la main:
private static final int[] plateau = {0,0,0, 0,0,0, 0,0,0};
listeSituations est une ArrayList (déclarée en dehors de la main) composée d'un seul objet MorpionSituation:
private static ArrayList<MorpionSituation> listeSituations = new ArrayList<MorpionSituation>();
//Création de l'objet MorpionSituation:
1 2 3 4 5
|
int[] temp = new int[9];
temp = plateau;
MorpionSituation sit = new MorpionSituation(temp);
listeSituations.add(sit); |
L'objet MorpionSituation contient une variable situation accessible par la fonction getSituation:
1 2 3 4 5 6 7 8 9 10 11 12
| public MorpionSituation(int[] plat) {
this.temp = plat;
this.situation = this.temp;
}
public int[] getSituation() {
return this.situation;
}
public void setSituation(int[] newSituation) {
situation = newSituation;
} |
Et tout ce beau monde affiche ça
:
1: [I@7ba4f24f
1: 000010000
000010000
000210000
2: [I@7ba4f24f
2: 000210000
Explication:
Avant de lancer le bout de code du début, plateau vaut 000010000, les 3 premieres lignes sont normales, ensuite on modifie plateau sans toucher a situation, puis on affiche situation et on voit qu'elle a changé -________-'
Please help !
Partager