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

Langage Java Discussion :

Petit probleme que j'arrive pas a résoudre :s


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Petit probleme que j'arrive pas a résoudre :s
    Bonjour a tous.

    Voila je suis en train de faire un gestionnaire de pieces avec un panier.
    Mon probleme c'est que mon panier n'affiche rien.
    En fait j'ai fait 2 classes : Panier et elemPanier car il y a la gestion de la quantitée.
    Donc en fait je gère ça dans ma classe panier, je vérifie si l'element existe deja dans ce cas, j'augmente la quantitée de 1. Mais je comprend pas d'ou viens le probleme car quand j'affiche mon panier rien ne s'affiche...

    je vous met mes 2 classes :

    Classe Panier
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.util.ArrayList;
    import java.util.List;
     
     
    public class Panier {
     
    	private ArrayList<elemPanier> ListeObjets;
     
    	public Panier() 
    	{
    		ListeObjets = new ArrayList<elemPanier>();
    	}
     
    	public ArrayList<elemPanier> getListeObjets() {
    		return ListeObjets;
    	}
     
    	public void setListeObjets(ArrayList<elemPanier> listeObjets) {
    		ListeObjets = listeObjets;
    	}
     
     
    	public void AjoutPanier(Piece P) {
     
    		for(int i=0; i<ListeObjets.size(); i++)
    		{
    			if (ListeObjets.get(i).getElementPanier().get(i).getNom() == ListeObjets.get(i+1).getElementPanier().get(i).getNom())
    			{
    				ListeObjets.get(i).setQte( ListeObjets.get(i).getQte()+1);
    			}
    			else
    			{
    				new elemPanier(P, 1);
    			}
    		}
    	}
     
    	public void SuppPanier(Piece P) {
    		ListeObjets.remove(P);
    	}
     
     
     
    	public void AffichagePanier()
    	{
     
    		String str = "\t\tVoici votre panier :\n\n" +
    					 "\tNom\tPrix\tReference\tQuantitée\n";
    			for (int i=0; i<ListeObjets.size(); i++)
    			{
    				str = str + "\t"+
    				ListeObjets.get(i).getElementPanier().get(i).getNom()+"\t"+
    				ListeObjets.get(i).getElementPanier().get(i).getPrix()+"\t"+
    				ListeObjets.get(i).getElementPanier().get(i).getReference()+"\t"+
    				ListeObjets.get(i).getQte()+"\n";
    			}
    		System.out.println(str);
    	}
    }

    Classe elemPanier :
    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
    import java.util.ArrayList;
     
     
    public class elemPanier {
     
    	private ArrayList<Piece> elementPanier;
    	private int Qte;
     
    	public elemPanier()
    	{
    		elementPanier = new ArrayList<Piece>();
    		Qte = 0;
    	}
     
    	public elemPanier(Piece P, int q)
    	{
    		elementPanier.add(P);
    		Qte = q;
    	}
     
    	public ArrayList<Piece> getElementPanier() {
    		return elementPanier;
    	}
    	public void setElementPanier(ArrayList<Piece> elementPanier) {
    		this.elementPanier = elementPanier;
    	}
    	public int getQte() {
    		return Qte;
    	}
    	public void setQte(int qte) {
    		Qte = qte;
    	}
     
    }

  2. #2
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Dans la méthode AjoutPanier(), si la piece n'est pas déjà dans le panier ne faudrait il pas l'ajouter :

    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
     
    public void AjoutPanier(Piece P) {
     
    		for(int i=0; i<ListeObjets.size(); i++)
    		{
    			if (ListeObjets.get(i).getElementPanier().get(i).getNom() == ListeObjets.get(i+1).getElementPanier().get(i).getNom())
    			{
    				ListeObjets.get(i).setQte( ListeObjets.get(i).getQte()+1);
    			}
    			else
    			{
    				ListeObjets.add(new elemPanier(P, 1));
    			}
    		}
    	}
    Utilise de préférence les conventions de nommage pour plus de lisibilté.

  3. #3
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Personnellement pour la gestion d'un panier, je ferais ;
    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
     
     
    public class Piece {
    	private String nom;
    	/** En centimes */
    	private int prix;
     
    	public Piece(String nom, int prix) {
    		this.nom = nom;
    		this.prix = prix;
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
    	public int getPrix() {
    		return prix;
    	}
    }
    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
     
    public class ElementPanier {
    	private Piece piece;
    	private int quantite;
     
    	public ElementPanier(Piece piece) {
    		this.piece = piece;
    		this.quantite = 1;
    	}
     
    	public ElementPanier(Piece piece, int quantite) {
    		this.piece = piece;
    		this.quantite = quantite;
    	}
     
    	public void addQuantite(int quantite) {
    		this.quantite += quantite;
    	}
     
    	public Piece getPiece() {
    		return piece;
    	}
     
    	public int getQuantite() {
    		return quantite;
    	}
     
     
    }
    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
    import java.util.HashMap;
    import java.util.Map;
     
     
    public class Panier {
    	private Map<String, ElementPanier> elements = new HashMap<String, ElementPanier>();
     
    	public void ajout(Piece piece) {
    		ElementPanier element = this.elements.get(piece.getNom());
    		if (element == null) {
    			element = new ElementPanier(piece);
    			this.elements.put(piece.getNom(), element);
    		} else {
    			element.addQuantite(1);
    		}
    	}
     
    	public void supprimer(Piece piece) {
    		ElementPanier element = this.elements.get(piece.getNom());
    		this.elements.remove(element);
    	}
     
    	public String toString() {
    		StringBuffer buffer = new StringBuffer();
    		for (ElementPanier elt : this.elements.values()) {
    			Piece p = elt.getPiece();
    			buffer.append(p.getNom() + "\t");
    			buffer.append(p.getPrix() / 100 + "\t");
    			buffer.append(elt.getQuantite() + "\t");
    			buffer.append(p.getPrix() *  elt.getQuantite() / 100);
    			buffer.append("\n");
    		}
    		return buffer.toString();
    	}
    }
    Je n'ai pas testé les classes que je viens de donner

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    D'accord merci beacoup pour ta réponse.J'ai essayé en corrigeant ce que tu m'as dis mais ça n'affiche toujours rien dans mon panier je comprend vraiment pas.

    Mais je vais étudier ta manière de faire ça me semble bien plus propre.

    Merci bcp.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé avec ta méthode. Mais c'est pareil. je n'ai rien du tout qui s'affiche avec le toString.

    Je comprend vraiment pas...

  6. #6
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Je viens de faire un test rapide, cela marche très bien.

    Voici la classe de test :
    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
    public class TestPanier {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		Panier panier = new Panier();
     
    		Piece p1 = new Piece("Piece 1", 100);
    		panier.ajout(p1);
    		panier.ajout(p1);
     
    		Piece p2 = new Piece("Piece 2", 110);
    		panier.ajout(p2);
    		panier.ajout(p2);
    		panier.ajout(p2);
     
    		System.out.println(panier);
    	}
     
    }
    J'ai aussi corriger un bug de la méthode toString :
    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
     
    public class Panier {
    	private static final BigDecimal CENT = new BigDecimal(100);
    	....
    	public String toString() {
    		StringBuffer buffer = new StringBuffer();
    		double total = 0;
    		buffer.append("Piece\tPrix Unitaire\tQuantité\tPrix Total\n");
    		for (ElementPanier elt : this.elements.values()) {
    			Piece p = elt.getPiece();
    			// Pour calculer le prix unitaire, on passe par un BigDecimal
    			// Si on ne le fait pas, le calcul peut avoir des pb d'arrondis
    			BigDecimal prixUnitaire = new BigDecimal(p.getPrix()).divide(CENT);
    			BigDecimal prixPiece = prixUnitaire.multiply(new BigDecimal(elt.getQuantite()));
    			total += prixPiece.doubleValue();
    			buffer.append(p.getNom() + "\t");
    			buffer.append(prixUnitaire.doubleValue() + "\t\t");
    			buffer.append(elt.getQuantite() + "\t\t");
    			buffer.append(prixPiece.doubleValue());
    			buffer.append("\n");
    		}
    		buffer.append("Total\t\t\t\t\t" + total);
    		return buffer.toString();
    	}
    A+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    exact ça y est ça marche !!

    Merci bcp pour ton aide !! tu me sauve la vie

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2012, 09h41
  2. Problème que je n'arrive pas a résoudre
    Par mthoumy dans le forum Débuter
    Réponses: 11
    Dernier message: 24/05/2010, 06h48
  3. Réponses: 2
    Dernier message: 02/11/2009, 15h25
  4. [Tableaux] probleme je n'arrive pas à trouver l'erreur
    Par harlock59 dans le forum Langage
    Réponses: 21
    Dernier message: 06/06/2006, 14h43
  5. Une parse error que j'arrive pas à trouver
    Par Kerweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2006, 12h25

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