Problème des Listes chainée en JAVA

infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012 - 15 mai 2012 à 00:05
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012 - 25 mai 2012 à 15:13
Bonsoir a tous le monde, je voulais vous remercie tout d'abord pour ces cher information posés via ce site de programmation . je suis d'entrain d'élaborer une liste chainée en JAVA (eclipse HElios), j'ai implémenté ce code. mais le problème quand je veux afficher le contenu de la liste par exemple 2 éléments avec deux information (El1-INF1) et (El2-INF2) , il m'affiche deux éléments mais avec l'information du dernier comme suit! (El1-INF2) et (El2-INF2). je ne sais pas ou est le problème! si possible quelqu'un me donner un help SVP!!
le voilà mon code :
import java.util.Scanner;

public class Enseignant {
public static String NomEn;
public static String PrenomEn;
public static String idEnseign;
public Enseignant Next;

Enseignant(String Nom,String Prenom ,String idEn,Enseignant Enlist){
this.idEnseign = idEn;
this.NomEn = Nom;
this.PrenomEn = Prenom;
this.Next = Enlist;
}
public Enseignant AddEns(String Nom,String Prenom ,String idEn,Enseignant Enlist){
return new Enseignant(NomEn, PrenomEn,idEnseign,Enlist);
}

public static void main(String[] args) {
String Nom;
String Prenom;
String idEnsei;
Scanner SC = new Scanner(System.in);
Enseignant En = null;
String rep = " ";
do{
System.out.print("Name : ");Nom = SC.next();
System.out.print("Prenom : ");Prenom = SC.next();
System.out.print("IdEns : ");idEnsei = SC.next();
En = new Enseignant(Nom,Prenom ,Niveau ,idEnsei , En);
En.AddEns(Nom, Prenom, idEnsei, En);
rep = SC.next();
System.out.println("rep "+rep);
}while(rep.compareTo("n")==1);

System.out.println("liste des Enseignants:\n");
//Enseignant EN = En;
while (En != null){
System.out.print("Id : "+En.idEnseign+"\nNom : "+En.NomEn+"\nPrénom : "+En.PrenomEn\n");
En = En.Next;
}

9 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
15 mai 2012 à 14:14
Salut,
Il y a beaucoup d'erreurs dans ce code.

Étape 1 : nettoyage
import java.util.Scanner;

public class Enseignant {

public static String nom;
public static String prenom;
public static String id;
public Enseignant next;

public Enseignant(String nom, String prenom, String id, Enseignant next) {

this.id = id;
this.nom = nom;
this.prenom = prenom;
this.next = next;

}

public Enseignant addEnseignant(String nom, String prenom, String id, Enseignant next) {
return new Enseignant(Enseignant.nom, Enseignant.prenom, Enseignant.id, this.next);
}

public static void main(String[] args) {

String nom;
String prenom;
String id;
Scanner scanner = new Scanner(System.in);
Enseignant enseignant = null;
String reponse;

do {

System.out.print("Nom : ");
nom = scanner.next();
System.out.print("Prénom : ");
prenom = scanner.next();
System.out.print("Id : ");
id = scanner.next();
enseignant = new Enseignant(nom, prenom, id, enseignant);
enseignant.addEnseignant(nom, prenom, id, enseignant);
reponse = scanner.next();
System.out.println("réponse " + reponse);

} while (reponse.compareTo("n") == 1);

System.out.println("liste des enseignants :\n");

while (enseignant != null) {

System.out.println("Id : " + enseignant.id + "\nNom : " + enseignant.nom + "\nPrénom : "
+ enseignant.prenom);

enseignant = enseignant.next;

}

}

}


Résultat :
Nom : nom1
Prénom : prenom1
Id : id1
o
réponse o
Nom : nom2
Prénom : prenom2
Id : id2
n
réponse n
liste des enseignants :

Id : id2
Nom : nom2
Prénom : prenom2
Id : id2
Nom : nom2
Prénom : prenom2


Étape 2 : suppression de la méthode add qui ne sert à rien, suppression du static devant les attributs, ajout d'une méthode toString pour la classe Enseignant, diminution de la visibilité des attributs de la classe Enseignant (public -> private), changement du test de la réponse (qui est vraiment bizarre)
import java.util.Scanner;

public class Enseignant {

private String nom;
private String prenom;
private String id;
private Enseignant next;

public Enseignant(String nom, String prenom, String id, Enseignant next) {

this.id = id;
this.nom = nom;
this.prenom = prenom;
this.next = next;

}

public String toString() {
return "Id : " + id + "\nNom : " + nom + "\nPrénom : " + prenom;
}

public static void main(String[] args) {

String nom;
String prenom;
String id;
Scanner scanner = new Scanner(System.in);
Enseignant enseignant = null;
String reponse;

do {

System.out.print("Nom : ");
nom = scanner.next();
System.out.print("Prénom : ");
prenom = scanner.next();
System.out.print("Id : ");
id = scanner.next();
enseignant = new Enseignant(nom, prenom, id, enseignant);
System.out.println("Ajouter un autre enseignant ? o/n");
reponse = scanner.next();

} while (reponse.equalsIgnoreCase("o"));

System.out.println("liste des enseignants :\n");

while (enseignant != null) {

System.out.println(enseignant);
enseignant = enseignant.next;

}

}

}


Résultat :
Nom : nom1
Prénom : prenom1
Id : id1
Ajouter un autre enseignant ? o/n
o
Nom : nom2
Prénom : prenom2
Id : id2
Ajouter un autre enseignant ? o/n
n
liste des enseignants :

Id : id2
Nom : nom2
Prénom : prenom2
Id : id1
Nom : nom1
Prénom : prenom1



Dis-nous si ces modifications te conviennent et si tu veux afficher la liste dans l'ordre d'ajout.
0
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012
15 mai 2012 à 20:57
Je vous remercie tout d'abord, , d'avoir tenir mon problème en compte! il m'aide beaucoup!
pour le code ta raison concerne les méthodes qui sert a rien AddEns! et pour la liste ya pas de problème dans l'ordre d'affichage!(parce que je utiliser ces informations comme ressources utiliser par les agents(environnement , communication, ...etc ) dans tous les cas je suis d'entrain d'élaborer une application de planification multi-agents! JADE avec Java! et je suis débutant en java, j'ai implémenter les listes chainées en principe de C++!
Merci jojolemariole !
Très cordialement
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
16 mai 2012 à 15:23
De rien,
Par contre si tu es libre de coder comme tu veux, je te conseille d'utiliser l'API Java. Par exemple il existe déjà la liste chaînée : LinkedList
0
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012
18 mai 2012 à 00:36
Ok, merci!
je la mettre en considération, enfin j'ai travailler avec ArrayList, parce que j'ai besoin de d'utiliser JTable pour afficher mes données! afin de définir ces modèles !
Très Cordialement !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012
20 mai 2012 à 23:30
Salut a tous le monde, j'ai essayer de faire un petit code java, (je suis débutant) pour manipuler des ressources (Enseignants et Enseignement) la première classe Enseignant (j'ai travailler avec ArrayList) comme suit:
import java.util.ArrayList;
public class Enseignant {
private  String NomEn;
private  String NiveauEn;
private  String idEnseign;


public Enseignant(String idEn,String Nom , String Niveau ){
// TODO Auto-generated constructor stub
this.idEnseign = idEn;
this.NomEn = Nom;
this.NiveauEn = Niveau;
}

public void setNom(String nom) {
this.NomEn = nom;
}
public String getNom() {
return NomEn;
}

public void setId(String Id) {
this.idEnseign = Id;
}
public String getId() {
return idEnseign;
}

public void setNiveau(String Niveau) {
this.NiveauEn = Niveau;
}
public String getNiveau() {
return NiveauEn;
}

public String toString() {
return "Enseignant [ Id : " + idEnseign+" Nom : " + NomEn + " Prénom : " + PrenomEn + " Niveau : "+NiveauEn+"]\n";
}

et la classe Enseignement aussi comme celle là! ArrayList, en changeant que les attributs (IntituleModule, Unite çàd(le module est appartient à une unité fondamentale ou secondaire)
et le problème qui se pose, je veux connaitre si je peux élaborer une List des Lists(ArrayList d'ArrayList): dans la classe ressources j'ai développer cette méthode qui permet d'ajouter une ressources(Enseignant ou bien Enseignement) :
public static void AddRess(String D,ArrayList<Enseignant> E,ArrayList<Enseignement> EM, ArrayList<Classe> C, ArrayList<Salle> S){

 final Ressources RSS = new Ressources(D,E,EM,); 
R.add(RSS);
}
public static void main(String[] args) {
// TODO Auto-generated method stu
EnsModels E = new EnsModels();
EnsmModels Em=new EnsmModels();

ENS = E.getEns();
ENSM = Em.getEnsm();

ArrayList<Ressources> R = new ArrayList<Ressources>();

AddRess(DEP,ENS, ENSM);

System.out.println("Ressources Humaines!");
System.out.print(R);

quelqu'un me donner un un coup de main! S.V.P , et merci tout d'abord !
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
21 mai 2012 à 16:49
Salut,

Peux-tu être plus précis ? Je n'ai pas compris ta question.
0
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012
22 mai 2012 à 22:32
Salut,

je n'arrive pas a ajouter des liste de type ArrayList dans une autre liste ArrayList

public static void AddRess(String D,ArrayList<Enseignant> E,ArrayList<Enseignement> ){

 final Ressources RSS = new Ressources(D,E,EM,); 
R.add(RSS);

ArrayList<Enseignant> E = new ArrayList<Enseignant>();
ArrayList<Enseignement> Em = new ArrayList<Enseignement>();

ArrayList<Ressource> R = new ArrayList<Ressource>();

R.AddRess(E,Em);

le problème que je peux ajouter, est ce que je peux développer le principe d'une ArrayList d'ArrayList( Liste des Listes comme en C++)??
0
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
23 mai 2012 à 15:17
Salut,

Bien sûr, on peut faire une liste de listes en Java, et même plus compliqué si besoin.

Par contre je ne comprends pas ton code. Je te fais mes remarques ci-dessous pour qu'on arrive à se comprendre un peu.

1) il y a plein d'erreurs de syntaxe dans ton code, peux-tu nous donner ton code en entier (les classes concernées par ton problème et leurs dépendances). Il faut que ça compile, si tu veux qu'on puisse le faire tourner de notre côté

2) essaie de respecter les conventions de nommage

3) En général on évite de préciser le type de l'implémentation au moment de la déclaration (paramètre, attribut ou variable). On se contente de donner le type de l'interface le plus abstrait possible.

Juste pour information, voilà une liste de listes de listes d'entiers en java :

List<List<List>> l3 = new ArrayList<List<List>>();
List<List> l2 = new ArrayList<List>();
List l1 = new ArrayList();

l1.add(1);
l1.add(2);
l1.add(3);

l2.add(l1);
l3.add(l2);
0
infomaNss Messages postés 13 Date d'inscription mardi 2 décembre 2008 Statut Membre Dernière intervention 25 août 2012
25 mai 2012 à 15:13
Merci !!

malgré que je n'ai pas mettre mon code complet ! a cause de çà longueur et l'héritage entre +ieurs classes,

c'est ce que je cherche, exactement

ton exemple m'aide beaucoup !

Merci !
0
Rejoignez-nous