Probleme Java ArrayList
Fermé
Michal
-
7 avril 2008 à 10:40
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 7 avril 2008 à 22:09
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 7 avril 2008 à 22:09
A voir également:
- Probleme Java ArrayList
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Jeux java itel touche - Forum Mobile
18 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 13:41
7 avril 2008 à 13:41
Parce que je pense que tu utilises toujours le même objet j de type Jeu.
Imagine: tu as j avec [0|4]
Tu l'insères dans ton arrayList à l'index 0.
Plus tard tu ajoutes [4|2] dans ton j et tu l'insères dans ton ArrayList à l'index 1. Le soucis ici c'est que comme tu sembles manipuler toujours le même objet de type Jeu, l'index 0 et l'index 1 de ton arrayList pointeront sur le même objet j. Et donc tu afficheras toujours le même jeu.
Si tu veux un historique, il faudrait que tu fasses une copie de ton jeu qui arrive dans miseAJourHistorique
Tu me suis?
Imagine: tu as j avec [0|4]
Tu l'insères dans ton arrayList à l'index 0.
Plus tard tu ajoutes [4|2] dans ton j et tu l'insères dans ton ArrayList à l'index 1. Le soucis ici c'est que comme tu sembles manipuler toujours le même objet de type Jeu, l'index 0 et l'index 1 de ton arrayList pointeront sur le même objet j. Et donc tu afficheras toujours le même jeu.
Si tu veux un historique, il faudrait que tu fasses une copie de ton jeu qui arrive dans miseAJourHistorique
Tu me suis?
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 13:27
7 avril 2008 à 13:27
Salut,
Ben tout à l'air d'aller bien, je vois pas en quoi tout s'efface...
Ben tout à l'air d'aller bien, je vois pas en quoi tout s'efface...
moi non + je comprends pas.
Je voudrais en fait que ca m'affiche :
[ [0|4] ]
[ [0|4] , [4|2] ]
[ [0|4] , [4|2] , [2|5] ]
et ca maffiche
[ [0|4] , [4|2] , [2|5] ]
[ [0|4] , [4|2] , [2|5] ]
[ [0|4] , [4|2] , [2|5] ]
...
merci de maider en tt k
Je voudrais en fait que ca m'affiche :
[ [0|4] ]
[ [0|4] , [4|2] ]
[ [0|4] , [4|2] , [2|5] ]
et ca maffiche
[ [0|4] , [4|2] , [2|5] ]
[ [0|4] , [4|2] , [2|5] ]
[ [0|4] , [4|2] , [2|5] ]
...
merci de maider en tt k
je viens de lire ton message. Je vais voir, je vais tester ta solution je verrai bien, mais c'est vrai que c peut etre ca. Simpa en tt cas de ta réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 19:36
7 avril 2008 à 19:36
Ben pour faire une copie ça dépend de ton objet.
Même si c'est un pu dangereux tu peux essayer de faire ça:
Même si c'est un pu dangereux tu peux essayer de faire ça:
Jeu tmp = j.clone(); //sachant que j est le Jeu à copier
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 19:41
7 avril 2008 à 19:41
clone est un méthode que tout objet Java possède.
je suis desole mais ca marche pas
ca me mets une erreur en me disant soit de mettre Jeu tmp = (Jeu) j.clone();
soit Object tmp = j.clone();
mais dans les deux cas, ca ne marche pas non plus.
c ptetre ma declaration de jeu ki va pas
ca me mets une erreur en me disant soit de mettre Jeu tmp = (Jeu) j.clone();
soit Object tmp = j.clone();
mais dans les deux cas, ca ne marche pas non plus.
c ptetre ma declaration de jeu ki va pas
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 19:53
7 avril 2008 à 19:53
Exact normalement c'est ça:
Et tu dis que ça marche pas? Qu'est ce qu'il dit?
Jeu tmp = (Jeu) j.clone();
Et tu dis que ça marche pas? Qu'est ce qu'il dit?
mais j'ai beau cliquer, rien n'y fait
Mais je pense que je vais changer de méthode
merci de m'avoir aider en tt k
Mais je pense que je vais changer de méthode
merci de m'avoir aider en tt k
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 20:10
7 avril 2008 à 20:10
Autre méthode: pourquoi ne pas stocker sous forme de chaine de caractère?
Tu crées un ArrayList<String> est dedans tu mets l'affichage du jeu en chaine de caractère (grâce à toString()).
Tu crées un ArrayList<String> est dedans tu mets l'affichage du jeu en chaine de caractère (grâce à toString()).
Essaye comme suit:
le problème ne vient pas d'un duplicata du meme jeu car il l'appelle en methode.
sinon pour ton index arrayList a les fonctions pour le faire automatiquement et donc compile le code en quelques lignes ^^
a mon avis c'est dans les index que tu doit te planter quelque part.
ArrayList<Jeu> listeJeu=new ArrayList<Jeu>(); public void miseAJourJeu (Jeu j) { listeJeu.add(j); System.out.println(listeJeu); // methode toString() dans Jeu obligatoire. (sinon retourne l'objet coter memoire) // affiche tout les elements de la liste sous forme [ obj1 ; obj2 ; ... ] if (listeJeu.size() >= 8) // pour les 8 derniers tours. listeJeu.remove(0); // supprime le 1er element de la liste. }
le problème ne vient pas d'un duplicata du meme jeu car il l'appelle en methode.
sinon pour ton index arrayList a les fonctions pour le faire automatiquement et donc compile le code en quelques lignes ^^
a mon avis c'est dans les index que tu doit te planter quelque part.
j'ai testé, ca marche pas non plus, ca me mets toujours :
[[ [2|5] ]]
[[ [1|2] , [2|5] ], [ [1|2] , [2|5] ]]
[[ [0|1] , [1|2] , [2|5] ], [ [0|1] , [1|2] , [2|5] ], [ [0|1] , [1|2] , [2|5] ]]
[[ [2|5] ]]
[[ [1|2] , [2|5] ], [ [1|2] , [2|5] ]]
[[ [0|1] , [1|2] , [2|5] ], [ [0|1] , [1|2] , [2|5] ], [ [0|1] , [1|2] , [2|5] ]]
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
7 avril 2008 à 22:09
7 avril 2008 à 22:09
le problème ne vient pas d'un duplicata du meme jeu car il l'appelle en methode.
Quand tu passes un objet en paramètre d'un méthode, il s'agit toujours du même objet... Le passage se fait par référence et non par copie, d'ou le problème d'effet de bord ici je pense.
Quand tu passes un objet en paramètre d'un méthode, il s'agit toujours du même objet... Le passage se fait par référence et non par copie, d'ou le problème d'effet de bord ici je pense.