Probleme affichage bizar

creepx Messages postés 9 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 31 mars 2009 - 31 mars 2009 à 17:01
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 31 mars 2009 à 18:32
bonjour
un petit soucis d'affichage me ramène a vous consulter :)

mon programme alimente et vide une pile

voila le code:

import java.util.*;

public class MaPile implements Pile {

private Vector donnee;

private int sommet=0;

    public MaPile(int taille) {
       
        donnee = new Vector(taille);
       
    }
   
  
  
   
    public boolean estVide()
 {
     return donnee.isEmpty();
 }
 /* public boolean estPlein()
    {
        return (donnee.size()== donnee.capacity());
    }
   
  */
    public void empiler(Object item) //throws Exception
    {
    if(donnee.size()==donnee.capacity())
            throw new Exception("pile pleinne");

            donnee.addElement(item);
       
          
    }
   
    public Object depiler()
    {
     if(donnee.isEmpty())
          throw new Exception("vide");
            return donnee.remove(donnee.size()-1);
    
          

    }
 
}

et voila le main  et c'est la ou j'ai un probleme pour afficher il m'affiche MaPile@42e816 au lieu de 6

import java.util.*;
import java.io.*;

    public class TestMaPile {
   
  
    public static void main(String[] args) {
    try{ 
      MaPile p= new MaPile(2);
   
    p.empiler(new Integer(6));
    System.out.println(p); // mon probleme est ici!!!!!!
    //while(!p.estVide()) 
     //p.depiler() ;
    
   
//System.out.println(p);
   
 
          

    
    }catch(Exception e)
        {
            System.out.println(e);
   
            }
           
    }
    }

merci pour votre attention

3 réponses

dmk04 Messages postés 206 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 7 mars 2012
31 mars 2009 à 17:29
Salut,

Je pense qu'il t'affiche l'adresse de ton objet p. Essaye d'implémenter une méthode toString() dans ta classe MaPile (peut-être serait-il bien d'avoir toString() dans ton interface "Pile").
0
creepx Messages postés 9 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 31 mars 2009
31 mars 2009 à 17:44
merci pour votre message
mais ca ne marche pas, effectivement c'est utile de rajouter un toString pour qu'il ne le confond pas avec la classe String, mais meme on rajoutant ca ca m'affiche toujour pareil :(

voila ce que j'ai rajouter
public  String toString()
 {
     String s="";
     s= "affichage:" + this.donnee +"";
     return s;
 }

et ds le main je met pour afficher : System.out.println(p.toString());

 
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 mars 2009 à 18:32
Salut,

Forcément, tu lui fait afficher quasiment la même chose : au lieu d'afficher l'adresse de ta variable p, tu lui fait afficher l'adresse de la variable donnee !

Modifie comme ceci :
public class MaPile implements Pile {

private Vector<Integer> donnee;

private int sommet= 0;

    public MaPile(int taille) {
       
        donnee = new Vector< Integer >(taille);
       
    }
   
  
  
   
    public boolean estVide()
 {
     return donnee.isEmpty();
 }
 /* public boolean estPlein()
    {
        return (donnee.size() == donnee.capacity());
    }
   
  */
    public void empiler( Integer item) //throws Exception
    {
    if(donnee.size() == donnee.capacity())
            throw new Exception("pile pleinne");

            donnee.addElement(item);
       
          
    }
   
    public Integer depiler()
    {
     if(donnee.isEmpty())
          throw new Exception("vide");
            return donnee.remove(donnee.size()-1);
    
          

    }

    public String toString() {
        StringBuffer resultat = new StringBuffer("Affichage: ");
        for (Integer nombre : donnee) {
            resultat += nombre + " ; ";
        }
        return resultat.toString();
    }

}
______________________________________
DarK Sidious
0
Rejoignez-nous