Problème des Listes chainée en JAVA

infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 15 mai 2012 à 00:05 - Dernière réponse : infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention
- 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;
}
Afficher la suite 

9 réponses

Répondre au sujet
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 15 mai 2012 à 14:14
0
Utile
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.
Commenter la réponse de cs_jojolemariole
infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 15 mai 2012 à 20:57
0
Utile
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
Commenter la réponse de infomaNss
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 16 mai 2012 à 15:23
0
Utile
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
Commenter la réponse de cs_jojolemariole
infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 18 mai 2012 à 00:36
0
Utile
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 !
Commenter la réponse de infomaNss
infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 20 mai 2012 à 23:30
0
Utile
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 !
Commenter la réponse de infomaNss
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 21 mai 2012 à 16:49
0
Utile
Salut,

Peux-tu être plus précis ? Je n'ai pas compris ta question.
Commenter la réponse de cs_jojolemariole
infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 22 mai 2012 à 22:32
0
Utile
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++)??
Commenter la réponse de infomaNss
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 23 mai 2012 à 15:17
0
Utile
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);
Commenter la réponse de cs_jojolemariole
infomaNss 13 Messages postés mardi 2 décembre 2008Date d'inscription 25 août 2012 Dernière intervention - 25 mai 2012 à 15:13
0
Utile
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 !
Commenter la réponse de infomaNss

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.