IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Problème d'index arraylist


Sujet :

JavaFX

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut Problème d'index arraylist
    Bonjour,
    Je suis en train de réaliser un constructeur de décor basique de jeu 2d en java et j'ai un soucis avec le remplissage d'une arrayliste. Je vais essayer de vous expliquer mon problème.
    Je démarre sur la grille 0, avec une variable "quelle_feuille"=0. Je mets des plateformes dessus et je passe à la grille 1 en ajoutant la grille 0 à mon arraylist "niveau", "quelle_feuille"+1. Celle-ci est donc de taille 1 maintenant.
    Je repasse sur la grille 0 en rajoutant la grille 1 à mon arraylist "niveau","quelle_feuille"-1. Elle est donc de taille 2.
    Je passe à la grille 1,"quelle_feuille"+1, elle reste de taille 2.
    Et là je veux passer à la grille 2 qui n'existe pas et donc en créer une, et c'est là que j'ai mon problème d'index.
    Je crée une grille uniquement si "quelle_feuille"=niveau.size, ce qui équivaut à être à la fin du niveau sauf que forcement si je fais un retour sur une feuille je veux enregistrer celle sur laquelle je suis c'est à dire remplacer la grille déjà existante dans niveau ou en ajouter une si je suis à la fin.
    Du coup cela créer forcément un décalage et mon problème d'index arrive.

    Pouvez-vous m'aider? Je met le programme java en zip vous verrez vite le problème normalement. ^^ constructeur.zip
    Merci,

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Ok, bien que je sois très content qu'on me fournisse un éditeur de jeu 2D presque intégral assets compris prêt a l'emploi (yeah , félicitations en tout cas !), ce n'est pas vraiment là le cœur de ton problème. Outre ce premier fait, ton explication n'est guère claire, en tout cas pour moi, ce qui veut probablement dire qu'il ne l'est pas suffisamment pour toi que tu puisses le conceptualiser (puisque tu ne peux pas l'exprimer simplement).

    Pour ce que j'ai pu en comprendre, tu as un problème de liste, et un problème de gestion d'index, soit. Plutôt que d'essayer de trifouiller ton gros programme complexe directement, tu devrais sincèrement te prendre l’habitue de te créer un nouveau petit projet qui va ne servir qu'a faire des tests sur ce problème-la et rien d'autre (plutôt que de manipuler des listes de grilles, manipule des listes d'entiers ou de chaines, conceptuellement c'est pareil). Et ensuite quand tu as fini par le reproduire alors tu peux poster cet exemple tout simple qui démontre ton soucis. C'est ainsi beaucoup plus facile pour toi comme pour nous de le résoudre.

    Ensuite quand tu as trouvé la solution (ou que quelqu'un d'ici t'a aidé à le faire) ALORS tu peux tenter de porter cette solution vers ton gros programme bien complexe (ici, ton éditeur de niveau de jeu 2D).

    Et sinon voila a part si c'est en rapport plus ou moins direct avec des listes observables (ObservableList) ou des propriétés ou du binding, un problème d'index dans une liste c'est un problème Java standard (voir même d'algorithmique totalement indépendant de Java en fait), pas un problème JavaFX donc ce n'est pas trop le bon forum pour ce genre de question.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    Bonsoir,

    J'ai regardé un peu le code et quand tu avances, tu ajoutes. Néanmoins, quand tu reviens en arrière et que tu recommences à aller vers l'avant tu passes par la deuxième partie du if de la méthode "feuille_suivante":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     else {
     
                feuille = g.recup_grille();
                niveau.set(quelle_feuille, feuille);
                gp.getChildren().clear();
                quelle_feuille++;            
                feuille = niveau.get(quelle_feuille);
    Or, sur le if, tu vérifies que le nombre de valeurs entrées est égal au numéro de la feuille. Néanmoins, entre le set et le get, tu incrémentes la variable quelle_feuille de 1. Mais as tu vérifié si il existe une valeur ?

    Modif: en tout cas, ça semble venir de ce coin. J'ai écrit un peu vite et donc sur ce que j'ai dit, il est vrai que l'index et le size ont une différence de un ^^. Bonne continuation.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    C'est bon j'ai résolu mon problème. C'était stupide en fait.
    J'ai simplement crée une méthode qui me renvoie un boolean pour savoir si mon index est vide ou pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public boolean indexExists(final ArrayList list, final int index) {
            return index >= 0 && index < list.size();
        }
    Je l'utilise juste avant le if et ma condition et devenue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    boolean existe = indexExists(niveau,quelle_feuille+1);
     
            if (existe==false) {
    Du coup je ne cherche pas à récupérer d'élément qui n'existait pas comme je le faisait avant et donc plus d'exception.

    Merci en tout cas vous m'avez fait voir plus clair. Vous aviez tous les deux raisons.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation ou problème d'index
    Par Erakis dans le forum SQL Procédural
    Réponses: 35
    Dernier message: 02/06/2006, 19h37
  2. [mysql] Toujours ce problème d'index !!
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 12/10/2005, 17h05
  3. [perl]Problème tableau indexé
    Par LE NEINDRE dans le forum Langage
    Réponses: 8
    Dernier message: 25/08/2005, 21h24
  4. Problème d'index avec load data file
    Par bruno782 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/03/2005, 12h11
  5. Problème d'index
    Par claude dans le forum SQL
    Réponses: 6
    Dernier message: 04/08/2003, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo