[java] Tableau d'objets

Résolu/Fermé
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 - 8 août 2009 à 01:09
 christophe238 - 29 nov. 2011 à 08:12
Bonjour, j'ai un petit probléme avec le retour d'une méthode. Je suis en train de programmer l'enregistrement de notes dans une classe ResultatModule (id,CC,TP,Exam).

Dans une autre classe, AnneeEtudiant(ide,nbModules,mod[]), je veux enregistrer le nombre de modules suivis par l'étudiant (clé: ide), et dans un tableau de ResultatModule, chaque résultats qu'il a eu.

Donc voici le code pour la classe ResultatModule:

public class ResultatModule {
	
	String id;
	int noteCC;
	int noteTP;
	int noteEx;
	
	//constructor;
	ResultatModule(String id, int noteCC, int noteTP, int noteEx){
		
		this.id=id;
		this.noteCC=noteCC;
		this.noteTP=noteTP;
		this.noteEx=noteEx;
		
	}
	
	//accesseurs
	String getId(){return id;}
	int getCC(){return noteCC;}
	int getTP(){return noteTP;}
	int getEx(){return noteEx;}
	
	//modificateurs 
	void setId(String id){this.id=id;}
	void setCC(int cc){noteCC=cc;}
	void setTP(int tp){noteTP=tp;}
	void setEx(int ex){noteEx=ex;}
	
	double calculeMoyenne(){
		double m=(0.3*noteCC+0.2*noteTP+0.5*noteEx);
		return m;
	}
	
	boolean valideModule(){
		if (calculeMoyenne()>=10){
			return true;}
		else {return false;}
		
	}
	
	
	
}


Et le code pour AnneeEtudiant :

public class AnneeEtudiant {
		
	String ide;
	int nbModules;
	
	//déclaration du tableau, on ne donne pas la taille !!
	ResultatModule mod[];
	
	public AnneeEtudiant(String ide)
	{
		//construit le tableau
		mod = new ResultatModule[19];
		
		this.ide=ide;
		this.nbModules=0;
		}
	
	String getIde(){return ide;}
	int getNbModules(){return nbModules;}
	
	ResultatModule getResultat(String idMod){
		
		int cpt=0;
		boolean trouve=false;
		
		while ((!trouve) && (cpt<=nbModules)){
			if (idMod.equals(mod[cpt].id)){
				trouve=true;
				}
			else {cpt++;}
			
			if (trouve){return mod[cpt];}
			else {return null;}

			
		}
	}
	
	
	
}


Donc le problème, c'est dans la derniére méthode, getResultat, il m'affiche une erreur comme quoi il faut que la méthode retourne un objet de type ResultatModule .... sauf que c'est ce que je fait, enfin il me semble !!

Merci pour votre aide!
A voir également:

3 réponses

Bonjour,

a mon avis un id devrait toujours être numérique.

Ta boucle ne fait qu'un tour avant de conclure au résultat. Il devrait avoir un seul
mot clé return et il devrait etre situé juste avant de quiter la méthode.

Donc sortir la condition return de la boucle et ca devrait aider.
0
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 4
8 août 2009 à 10:49
Impeccable, je te remercie beaucoup !
Sinon pour l'id, pour moi aussi ce devrait être un int, mais dan ce cas là, je suis obligé de faire en string, mais je ne pense pas que ça change grand chose ...

Sinon j'aurai une autre question, qu'elle est la différence entre
if (idMod.equals(mod[cpt].id)){ 

et ce code :
if (idMod==(mod[cpt].id)){ 


??

merci!
0
christophe238
29 nov. 2011 à 08:12
Bonjour,

Je répond un peu en retard, mais je me dis que ça pourrait éventuellement servir à d'autre qui se poseraient la question.

La différence entre == et equals :
== fait la comparaison entre des objets. S'ils pointent tous les deux vers des adresses différentes alors qu'ils sont identiques en terme de valeurs des attributs, le == retournera quand même FALSE.
equals() permettra quant à lui de tester les valeurs.
0