IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème dans ma liste chainée


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 9
    Points
    9
    Par défaut Problème dans ma liste chainée
    Bonjour,

    je voudrais créer un petit programme pour naviguer sur les rames de métro parisien , je me base sur un TD que j'ai trouvé sur le site de polytech paris;
    pour le moment je m'en sortais pas trop mal , mais je suis bloqué sur un exo, et j'ai besoin d'aide.

    voici mes Class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public class ListeStations {
     
    	Station station;
    	ListeStations suivant;
     
    	public ListeStations(Station station, ListeStations suivant) {
     
    		//initialisation des champs
    		this.station=station;
    		this.suivant=suivant;
     
    	}
     
    	public void afficher() {
     
     
    		ListeStations suite = this;
    		while (suite != null) {
     
    			System.out.print(" " +suite.station.chaineLigneNom()+", ");
    			suite = suite.suivant ;
     
    		}
     
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public class Station {
     
    	String nom; //nom de la station
    	String ligne; //ligne du métro
    	ListeStations voisines; //station suivante
     
    	int ordreDeVisite; //ordre sur la ligne
     
    	public Station(String nom, String ligne, ListeStations voisines) {
     
    		//initialisation des champs
    		this.nom=nom;
    		this.ligne=ligne;
    		this.voisines=voisines;
    		ordreDeVisite = 0;
    	}
     
    	public String chaineLigneNom() {
     
    	//affichage de la chaine de caractére
    		return ligne+"-"+nom  ;
    	}
     
    	public void afficher() {
     
    		System.out.println("Station : "+nom);
    		System.out.println("Ligne : "+ligne);
    			if (ordreDeVisite == 0) {
    			System.out.println("ordre de visite : jamais visite. ");
    		}
    			else
    			{
    				System.out.println("ordre de visite : "+ ordreDeVisite);
    		}	 
    		if (voisines == null) {
     
    			System.out.println("Stations voisines : aucune ");
    		}
    			else
    			{
    				System.out.println("Stations voisines : "+voisines);
    		}	
    	}
     
    	public void ajouterVoisine(Station s) {
     
    		 voisines= new ListeStations(s, voisines);
     
    		}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class TestListeStations {
    	public static void main(String[] args) {
     
    					Station[] station = new Station[4];
     
    					station[0] = new Station("Denfert-Rochereau", "6", null);
    					station[1] = new Station("Saint-Jacques", "6", null);
    					station[2] = new Station("Glacière", "6", null);
    					station[3] = new Station("Odéon", "10", null);
     
    					station[0].ordreDeVisite=1;
    					station[1].ordreDeVisite=2;
    					station[2].ordreDeVisite=3;
     
    					station[0].ajouterVoisine(station[1]);
    					station[1].ajouterVoisine(station[0]);
     
    					station[1].ajouterVoisine(station[2]);
    					station[2].ajouterVoisine(station[1]);
     
    					for (int i = 0; i < 4; i++)
    						station[i].afficher();
     
    				}
    }
    et mon résultat :
    Station : Denfert-Rochereau
    Ligne : 6
    ordre de visite : 1
    Stations voisines : ListeStations@1690726
    Station : Saint-Jacques
    Ligne : 6
    ordre de visite : 2
    Stations voisines : ListeStations@5483cd
    Station : Glacière
    Ligne : 6
    ordre de visite : 3
    Stations voisines : ListeStations@9931f5
    Station : Odéon
    Ligne : 10
    ordre de visite : jamais visite.
    Stations voisines : aucune
    alors je tourne en rond , je comprend pas pourquoi il m'affiche ListeStations@9931f5.

    Merci de votre aide.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Bonjour,

    Tu utilises cette syntaxe pour afficher ton libellé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Stations voisines : "+voisines);
    Sachant que "voisines" est de type ListeStations.

    Dans ce cas là, ton système va utiliser la fonction toString() sur la classe ListeStations. Tu ne redéfinis pas la méthode toString() donc par défaut, il va t'afficher l'adresse mémoire de ta ressource. Tes solutions :
    - sois tu redéfinis la méthode toString() de ta classe ListeStations,
    - sois tu spécifies d'utiliser "voisines.afficher()"

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    bonjour robin,

    Tous d'abord merci de ta réponse,

    effectivement j'avais bien pensé écrire

    System.out.println("Stations voisines : "+voisines.afficher());

    Mais la encore erreur de syntaxe , le compilateur veut comme tu le signale que je le passe en String.




    si je suis bien l'énoncé de ce TD , je ne dois pas touché à la class ListeStation,

    pour aide voici l'énoncé :
    " programmez la fonction public void ajouterVoisine(Station s) de la classe Station, qui ajoute une station voisine en tête de la liste voisines.

    Puis, modifiez la fonction public void afficher() de la classe Station pour que celle-ci affiche maintenant la liste des voisines."

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Points : 9
    Points
    9
    Par défaut
    Bon je réussi en contournant le problème,

    je mis :

    System.out.print("Stations voisines : " );
    voisines.afficher();

    et la ça marche.

    comme quoi faut pas grand chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/12/2014, 11h44
  2. Réponses: 4
    Dernier message: 04/11/2007, 13h46
  3. Réponses: 10
    Dernier message: 08/12/2006, 02h18
  4. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  5. Réponses: 2
    Dernier message: 10/10/2005, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo