Conflit de mémoire entre plusieurs variables
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:
Code:
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:
Code:
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:
Code:
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:
Code:
private static ArrayList<MorpionSituation> listeSituations = new ArrayList<MorpionSituation>();
//Création de l'objet MorpionSituation:
Code:
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:
Code:
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 :evilred: :
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 !