Methodes qui marchent pas

Fermé
dvmedellin Messages postés 4 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 17 décembre 2012 - 17 déc. 2012 à 05:31
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 17 déc. 2012 à 09:14
Bonjour,

j'ai une classe où je dois completer quelques methodes, voila les attributs:

/**
* nbreCours est le nombre de cours auxquels l'étudiant est actuellement
* inscrit
*/
private int nbreCours;
/**
* listeSigleCours est un tableau où les n premiers éléments représentent
* les sigles des cours auxquels l'étudiant est inscrit. n devrait en tout
* moment représenté par la valeur de l'attribut nbreCours.
*/
String[] listeSigleCours;
/**
* MAX_NBRE_COURS représente le nombre max de cours auxquels un étudiant
* peut s'inscrire.
*/
private static final int MAX_NBRE_COURS = 4;

et voila les deux methodes avec lesquelles j'ai de la misère:

/**
* Trouve l'indice d'un cours listeSigleCours. Les majuscules et minuscules
* sont ignorés pour la recherche. Les indices commencent de 0.
*
* @param cours le cours à chercher
* @return l'indice du cours est retournée si l'étudiant est inscrit à ce
* cours et -1 sinon
*
*
*/
public int indiceCours(String cours) {
int index = 0;
cours = cours.trim();
int nbreCours = getNbreCours();
String[] tabCours = getListeSigleCours();
if (nbreCours == 0) {
index = -1;
} else {
for (int i = 0; i < nbreCours; i++) {
if (tabCours[i].equalsIgnoreCase(cours)) {
index = i;
} else {
index = -1;
}
}
}

return index;
}


/**
* *
* La méthode inscrireCours() ajoute cours à listeSigleCours si le nombre de
* cours n'a pas atteint MAX_NBRE_COURS et si le cours n'est pas déjà dans
* la liste. En cas d'insertion cours converti en majuscule.
*
* Aucune validation n'est requise pour cour. Toute chaîne de caractères est
* acceptée.
*
* Cette méthode doit utiliser la méthode indiceCours
*
* @param cours est le cours où l'étudiant est à inscrire
*
* @return true est retourné si cours est ajouté à listeSigleCours. Si le
* cours existe déjà ou le nombre MAX_NBRE_COURS de cours est déjà atteint
* la valeur retournée est false
*/
public boolean inscrireCours(String cours) {
int index = indiceCours(cours);
boolean ajout = true; //represente l'ajout d'un cours dans la liste de cours inscrits
String[] tabCours;
tabCours = new String[MAX_NBRE_COURS];
ajout = index == -1 && nbreCours < MAX_NBRE_COURS;
if (ajout) {
tabCours[nbreCours] = cours.trim().toUpperCase();
}
setListeSigleCours(tabCours);
return ajout;
}

les methodes je les ai complété, mais ca marche pas et j'ai deja essayé plusieurs choses... avez vous une idée de ce qui marche pas???



1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
17 déc. 2012 à 09:14
Les méthode set/get sont courantes pour manipuler les données mais elle ne sont pas obligatoires, et en conséquences elles n'ont rien d'automatiques !

Si tu veux utiliser des méthodes getNbreCours, getListeSigleCours et setListeSigleCours, il faut d'abord les définir dans ta classe.

Cependant ce genre de méthodes sont avant tout faites pour un usage externe à la classe, quand tu édites des méthodes de la classe tu peux (et tu devrais) utiliser directement les attributs.

Je réécris ton code avec l'utilisation directe des attributs (je laisse le reste tel quel, même si c'est sûrement faux)

public int indiceCours(String cours) {
int index = 0;
cours = cours.trim();
//int nbreCours = getNbreCours();
//String[] tabCours = getListeSigleCours();
if (nbreCours == 0) {
index = -1;
} else {
for (int i = 0; i < nbreCours; i++) {
if (listeSigleCours[i].equalsIgnoreCase(cours)) {
index = i;
} else {
index = -1;
}
}
}

return index;
}

public boolean inscrireCours(String cours) {
int index = indiceCours(cours);
boolean ajout = true; //represente l'ajout d'un cours dans la liste de cours inscrits
//String[] tabCours;
listeSigleCours = new String[MAX_NBRE_COURS];
ajout = index == -1 && nbreCours < MAX_NBRE_COURS;
if (ajout) {
listeSigleCours[nbreCours] = cours.trim().toUpperCase();
}
//setListeSigleCours(tabCours);
return ajout;
}
0