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

avec Java Discussion :

Problème modification ArrayList.


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Problème modification ArrayList.
    Bonjour,

    Je rencontre un soucis pour modifier les valeurs d'une arraylist indice par indice en fonction d'un retour de comparaison.
    Exemple :
    Je rentre la combinaison 2365 -> mon programme va partir a la première boucle de 0 0 0 0 puis va aller jusqu'à 6 6 6 6. A chaque fois qu'une valeur est présente, il doit retourner la valeur au premier emplacement "disponible".
    Soit :
    Valeur 0 -> 0000
    Valeur 1 > 1111
    Valeur 2 > 2222
    Valeur 3 > 2333
    Valeur 4 > 2344
    Valeur 5 > 2355
    Valeur 6 > 2356.

    Tout va bien jusqu'à l'ajout de la dernière valeur où j'obtiens un jolie java.lang.IndexOutOfBoundsException ou selon la boucle mon premier chiffre ne se met pas a jour

    Voiçi mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	for(int i = 0; i < GameOptions.PAWNS; i++) {
    			combinaisonIA.add(color);
    			testColor[i]=color;
    		}
     
    		do {
     
    			int pawnsToAdd = countPresentIA(secret, testColor);
     
    			if(pawnsToAdd > 0 && pos < GameOptions.PAWNS - 1) {
    				int x = 0;
     
    				while(pawnsToAdd > x) {
    					combinaisonIA.set(pos,color);
    					pos++;
    					pawnsFound++;
    					x++;
    				}
    			}
     
    			for(int i = 0; i < GameOptions.PAWNS ; i++) {		
    				if( pos <= i) {
    					combinaisonIA.set(i, color);
    				}
    			}

    Merci pour votre aide.

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ajoute le retour console :
    Votre nombre secret est :[2, 3, 6, 5]
    Tentative(s) : 1 | Proposition -> [0, 0, 0, 0] || Résultat : 0 bonne(s) position(s)
    Tentative(s) : 2 | Proposition -> [1, 1, 1, 1] || Résultat : 0 bonne(s) position(s)
    Tentative(s) : 3 | Proposition -> [2, 2, 2, 2] || Résultat : 1 bonne(s) position(s)
    Tentative(s) : 4 | Proposition -> [3, 3, 3, 3] || Résultat : 1 bonne(s) position(s)
    Tentative(s) : 5 | Proposition -> [3, 4, 4, 4] || Résultat : 1 présent(s), 0 bonne(s) position(s)
    Tentative(s) : 6 | Proposition -> [3, 4, 5, 5] || Résultat : 1 présent(s), 1 bonne(s) position(s)
    Tentative(s) : 7 | Proposition -> [3, 4, 5, 6] || Résultat : 3 présent(s), 0 bonne(s) position(s)

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Sae92 Voir le message
    Tout va bien jusqu'à l'ajout de la dernière valeur où j'obtiens un jolie java.lang.IndexOutOfBoundsException ou selon la boucle mon premier chiffre ne se met pas a jour
    Cette erreur signifie qu'on accède à un index n'existant pas dans la List, donc inférieur à 0, ou supérieur ou égal à son nombre d'éléments.

    Le problème survient sûrement ici :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(pawnsToAdd > x) {
    	combinaisonIA.set(pos,color);
    	pos++;
    	pawnsFound++;
    	x++;
    }
    Le souci, c'est que pos augmente, sans contrôle sur son maximum, donc potentiellement atteint le nombre d'éléments de combinaisonIA. La condition de boucle est d'ailleurs probablement erronée :

    1. si pawnsToAdd <= x, on n'entre pas dans la boucle. Donc, son code n'est pas exécuté et on ne peut pas obtenir l'exception.
    2. sinon, pawnsToAdd est > x, donc on entre dans la boucle, et on incrémente pos qui peut potentiellement atteindre la valeur de combinaisonIA.size(). Peut-être que pawnsToAdd est censé l'empêcher de par l'algorithme, ou que pos n'est pas censé avoir une valeur qui le permet lors de l'entrée dans la boucle : il faut donc vérifier l'état de ces valeurs, et vérifier la cohérence de tout ça (en debug ou par traces).


    A noter que ce while devrait être remplacé par un for (et pawnsFound n'a pas de raison d'être, puisqu'il vaudra toujours pawnsToAdd en sortie de boucle)

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci, j'ai résolu mon problème hier soir, mais je note tes conseils dans un coin de ma tête.

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

Discussions similaires

  1. [Plone] Problème modification template colophon
    Par schnito dans le forum Zope
    Réponses: 1
    Dernier message: 30/01/2007, 17h34
  2. [débutant] problème avec arraylist
    Par sissi25 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/12/2006, 16h01
  3. Problème avec ArrayList <String>
    Par fiphi dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 29/08/2006, 09h30
  4. Problème : modification d'un paramètre sous IE
    Par insane_fr dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 27/05/2006, 16h49
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

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