[LAJ1]TD8 Mastermind

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [LAJ1]TD8 Mastermind

Message  Azgorth le Sam 14 Nov 2009, 15:51

Bonjour à tous,
Je fais une foi de plus appel à vos lumières pour mon problème sur les méthodes nbPionsBienPlacés et Malplacés.
Voici le code de ces 2 méthodes de ma class Combinaison :
Code:

    public int nbPionsBienPlacés(Combinaison proposition, Combinaison solution){
                int bienPlacés=0;
                for(int i=0 ; i<proposition.length-1;i++){
                        if(proposition[i]==solution[i]){                               
                                bienPlacés= bienPlacés+1;
                        }
                }
                return bienPlacés;
        }
    public int nbPionsMalPlacés(Combinaison proposition, Combinaison solution){
                int malPlacés=0;
                for(int i=0; i<proposition.length-1; i++){
                        if(proposition[i]!=solution[i]){
                                malPlacés= malPlacés+1;
                        }
                }
                return malPlacés;
        }


Il me met comme erreur en compilant ceci :
Code:

Combinaison.java:17: cannot find symbol
symbol  : variable length
location: class g32642.td8.Combinaison
      for(int i=0 ; i<proposition.length-1;i++){
                               
Combinaison.java:18: array required, but g32642.td8.Combinaison found
         if(proposition[i]==solution[i]){
                    
Combinaison.java:18: array required, but g32642.td8.Combinaison found
         if(proposition[i]==solution[i]){
                                

Je ne comprend pas pourquoi il ne me reconnait pas le symbol .length, étant donné que les paramètres de mes méthodes sont de type Combinaison et que ma class Combinaison a comme attribut privé un int[], je devrais pouvoir les parcourir comme un tableau non ? En utilisant leurs tailles et leurs indices, hors ca bug....
Quelqu'un aurait il un indice à me donné pour résoudre ce problème svp ?
Merci d'avance pour vos réponses.


Dernière édition par Azgorth le Sam 14 Nov 2009, 17:20, édité 1 fois

Azgorth

Nombre de messages : 21
Age : 31
Prénom : Lionel
Statut : Etudiant 1ere Telecom
Localisation : Uccle
Date d'inscription : 25/09/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Wark le Sam 14 Nov 2009, 16:34

Non, Combinaison est un objet de type Combinaison.. tu ne peux le parcourir qu'avec les méthodes que tu fournis. (Par exemple getIndice(int i) qui te retournerait la valeur à l'indice i dans ton tableau privé)

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  mcd le Sam 14 Nov 2009, 16:51

Combinaison possède un tableau dans ses attributs mais n'EST PAS un tableau.
Tu peux donc demander la taille du tableau contenu dans Combinaison mais pas la taille de Combinaison.
Imagine que tu aies 2 tableaux dans Combinaison. Que voudrais dire la taille de Combinaison ? La taille de quel tableau ?

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Azgorth le Sam 14 Nov 2009, 17:19

Ok génial, j'ai bien compris maintenant comment utilisé mes paramètres...
Mais je trouve qu'il manque dans le TD un ligne qui dit : Écrivez une méthode getCombinaison() qui retourne l'attribut privé.
Enfin ca aurait peut être été trop facile dans ce cas la Smile

Merci pour vos réponses rapides !

Azgorth

Nombre de messages : 21
Age : 31
Prénom : Lionel
Statut : Etudiant 1ere Telecom
Localisation : Uccle
Date d'inscription : 25/09/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  LSV le Sam 14 Nov 2009, 19:32

Les méthodes d'acces et de modification des attributs (get-set) doivent, dans la plupart des cas, etre déclarées et a partir du moment ou tu peux avoir besoin d'un attribut en dehors de la classe elle même, elles sont obligatoires et il faut que cela devienne un réflexe Smile.

A quoi bon déclarer un attribut comme "privé", si n'importe qui peut accéder a cet attribut?

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  nvs le Sam 14 Nov 2009, 20:15

LSV a écrit:A quoi bon déclarer un attribut comme "privé", si n'importe qui peut accéder a cet attribut?
et à quoi bon déclarer un attribut privé, disons
Code:
brol
de type
Code:
int
si ses accesseurs font simplement :
Code:
int getBrol() {
    return brol;
}

void setBrol(int b) {
    brol = b;
}











_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Wark le Sam 14 Nov 2009, 20:32

Ne rentre-t-on pas dans les différences entre Java et C++ avec cette question ? (Différence entre pointeurs et références).

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  nvs le Sam 14 Nov 2009, 21:01

Wark a écrit:Ne rentre-t-on pas dans les différences entre Java et C++ avec cette question ? (Différence entre pointeurs et références).
non. on ne parle ici que des modificateurs d'accès public et private, communs à ces deux langages.









_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Dj x-fuse le Sam 14 Nov 2009, 21:49

Une petite question au passage :
Dans la méthode main de la classe Mastermind, on fourni la logique.
Dans cette logique, on initialise "j" comme étant un entier. Pourquoi ? Je ne vois pas son utilité dans la méthode, car pas utilisé...

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  LSV le Dim 15 Nov 2009, 15:13

nvs a écrit:
LSV a écrit:A quoi bon déclarer un attribut comme "privé", si n'importe qui peut accéder a cet attribut?
et à quoi bon déclarer un attribut privé, disons
Code:
brol
de type
Code:
int
si ses accesseurs font simplement :
Code:
int getBrol() {
    return brol;
}

void setBrol(int b) {
    brol = b;
}

On pourrait très bien avoir une méthode get, mais pas de méthode set... Le mettre en privé permettrait d'éviter d'y mettre n'importe quoi a n'importe quel moment Smile









LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Azgorth le Dim 15 Nov 2009, 15:28

Bonjour bonjour,
Voila tout fonctionne impecablement si ce n'est une chose sur laquelle je reste caler...
Il s'agit de mon code pour la méthode nbPionsMalPlacés() , le problème est que l'on doit vérifier si proposition[i] != solution[i] mais
elle doit aussi vérifier si proposition[i]==solution[d'un autre indice] et c'est seulement dans ce cas la que je peux incrémenter ma variable malPlacés à +1...

Mais voila donc le problème Smile qui commence à me faire mal de crâne, je n'arrive pas à coder proposition[i]==solution[d'un autre indice]
Un petit indice qlq1 svp ?

Azgorth

Nombre de messages : 21
Age : 31
Prénom : Lionel
Statut : Etudiant 1ere Telecom
Localisation : Uccle
Date d'inscription : 25/09/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Dj x-fuse le Dim 15 Nov 2009, 15:41

Azgorth a écrit:Bonjour bonjour,
Voila tout fonctionne impecablement si ce n'est une chose sur laquelle je reste caler...
Il s'agit de mon code pour la méthode nbPionsMalPlacés() , le problème est que l'on doit vérifier si proposition[i] != solution[i] mais
elle doit aussi vérifier si proposition[i]==solution[d'un autre indice] et c'est seulement dans ce cas la que je peux incrémenter ma variable malPlacés à +1...

Mais voila donc le problème Smile qui commence à me faire mal de crâne, je n'arrive pas à coder proposition[i]==solution[d'un autre indice]
Un petit indice qlq1 svp ?

Il faudrait déjà savoir si on incrémente uniquement des valeurs différentes ou pas, et dans quel cas...

Exemple :
Solution = 1234
Proposition = 2022
nbPionsMalPlacés renvois 1 ou 3 ?

Solution = 1145
Proposition = 9811
nbPionsMalPlacés renvois 2 ?

Dj x-fuse

Nombre de messages : 658
Age : 27
Prénom : Jonathan
Statut : 4ième sécu
Localisation : IRL
Date d'inscription : 18/10/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Azgorth le Dim 15 Nov 2009, 15:50

Dj x-fuse a écrit:

Il faudrait déjà savoir si on incrémente uniquement des valeurs différentes ou pas, et dans quel cas...

Exemple :
Solution = 1234
Proposition = 2022
nbPionsMalPlacés renvois 1 ou 3 ?

Solution = 1145
Proposition = 9811
nbPionsMalPlacés renvois 2 ?

Oui effectivement c'est un prob en plus à prendre en compte.
Pour ton 1er exemple je dirais qu'il retourne 1 et pour le 2eme il retourne 2 évidement.

Azgorth

Nombre de messages : 21
Age : 31
Prénom : Lionel
Statut : Etudiant 1ere Telecom
Localisation : Uccle
Date d'inscription : 25/09/2008

Revenir en haut Aller en bas

resolu Re: [LAJ1]TD8 Mastermind

Message  Contenu sponsorisé Aujourd'hui à 14:29


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum