creepx
Messages postés9Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention31 mars 2009
-
31 mars 2009 à 17:01
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDerniè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() ;
dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDerniè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").
creepx
Messages postés9Date d'inscriptionmercredi 11 février 2009StatutMembreDernière intervention31 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());
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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