Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Java

  deprime avec mon code java :(

Bas de page
Auteur Sujet :

deprime avec mon code java :(

n°14637
crapaud
Profil : Jeune recrue
Posté le 18-08-2005 à 13:52:20  
 

bon et bien je suis en pleine galère...  
je ne sais pas où aller dans mon code  
je veux juste calculer le prix en fonction de checkbox coché , mais rien à faire ça marche pas..  
je vous remets le code (et oui encore  [triste])  
 
 

Code :
  1. package com.carte_creperie.test; 
  2. import java.awt.Button; 
  3. import java.awt.Checkbox; 
  4. import java.awt.Color; 
  5. import java.awt.FlowLayout; 
  6. import java.awt.Frame; 
  7. import java.awt.Label; 
  8. import java.awt.event.ActionEvent; 
  9. import java.awt.event.ActionListener; 
  10. import java.awt.event.WindowAdapter; 
  11. import java.awt.event.WindowEvent; 
  12. import java.math.BigInteger; 
  13. import java.util.Enumeration; 
  14. import java.util.Hashtable; 
  15. import javax.swing.JOptionPane; 
  16. import javax.swing.*; 
  17. import java.awt.Choice; 
  18. import java.util.Properties; 
  19. import java.io.*; 
  20. import java.awt.*; 
  21. public class carte extends Frame implements ActionListener{ 
  22.    Properties props = new Properties(); 
  23.    Hashtable associationProduitsPrix; 
  24.    private GridLayout grid; 
  25.    private Label entree; 
  26.    private Checkbox salade; 
  27.    private Label lab; 
  28.    private Label lab2; 
  29.    private Label lab3; 
  30.    private Choice maCombo; 
  31.    private Checkbox melon; 
  32.    private Label cs; 
  33.    private Checkbox jf; 
  34.    private Checkbox complete; 
  35.    private Label csu; 
  36.    private Checkbox su; 
  37.    private Checkbox choc; 
  38.    private Label boi; 
  39.    private Checkbox coca; 
  40.    private Checkbox cidre; 
  41.    private Button bout; 
  42.    private Button quitter; 
  43.    class WindowEventHandler extends WindowAdapter { 
  44.       public void windowClosing(WindowEvent we) { 
  45.          dispose(); 
  46.       } 
  47.    } 
  48.    public carte() { 
  49.       super("creperie" ); 
  50.       addWindowListener(new WindowEventHandler()); 
  51.       // Lit les données du fichier de propriétés   
  52.       Properties props = new Properties(); 
  53.       try
  54.          props.load(new FileInputStream("carte.txt" )); 
  55.       } catch (FileNotFoundException e) { 
  56.          System.err.println("Fichier carte.txt non trouvé" ); 
  57.       } catch (IOException e) { 
  58.          System.err.println("Impossible de lire le fichier carte.txt" ); 
  59.       } 
  60.       // Création des champs   
  61.      // grid = new GridLayout(5, 0); //(ligne,colonne)   
  62.       TextField text = new TextField ("numero de table" ); 
  63.       entree = new Label("entree" ); 
  64.       lab = new Label(props.getProperty("prix" )); 
  65.       salade = new Checkbox(props.getProperty("libelle" )); 
  66.       maCombo = new Choice(); 
  67.        lab2 = new Label(props.getProperty("prix2" )); 
  68.       melon = new Checkbox(props.getProperty("libelle2" )); 
  69.       cs = new Label("crepe salee" ); 
  70.       lab3 = new Label(props.getProperty("prix3" )); 
  71.       jf = new Checkbox(props.getProperty("libelle3" )); 
  72.       complete = new Checkbox("complete" ); 
  73.       csu = new Label("crepe sucree" ); 
  74.       su = new Checkbox("crepe au sucre" ); 
  75.       choc = new Checkbox("crepe au chocolat" ); 
  76.       boi = new Label("boisson" ); 
  77.       coca = new Checkbox("coca cola" ); 
  78.       cidre = new Checkbox("cidre" ); 
  79.       bout = new Button("ticket" ); 
  80.       quitter = new Button("quitter l'application" ); 
  81.       // Initialise la fenêtre   
  82.       setSize(250, 250); 
  83.       setLayout(new FlowLayout()); //sinon n'affiche qu'un seul element ds la fenetre   
  84.       setBackground(Color.yellow); 
  85.       setForeground(Color.black); 
  86.       // Ajoute les champs à la fenêtre   
  87.       add(text); 
  88.       add(entree); 
  89.       add(salade); 
  90.       add(lab); 
  91.       add(maCombo); 
  92.       add(lab2); 
  93.       add(melon); 
  94.       maCombo.add("1" ); 
  95.       maCombo.add("2" ); 
  96.       add(cs); 
  97.       add(lab3); 
  98.       add(jf); 
  99.       add(complete); 
  100.       add(csu); 
  101.       add(su); 
  102.       add(choc); 
  103.       add(boi); 
  104.       add(coca); 
  105.       add(cidre); 
  106.       add(bout); 
  107.       add(quitter); 
  108.       // quitter.addActionListener(this);   
  109.       // Initialise les prix   
  110.    } 
  111.       private void initPrix() { 
  112.       associationProduitsPrix = new Hashtable(); 
  113.       associationProduitsPrix.put(salade, new BigInteger(props.getProperty("prix" ))); 
  114.       associationProduitsPrix.put(melon, new BigInteger(props.getProperty("prix2" ))); 
  115.       } 
  116.       // Initialise les évènements des boutons   
  117.     private void initBoutonsListeners() { 
  118.         bout.addActionListener(new ActionListener() 
  119.         { 
  120.             public void actionPerformed(ActionEvent e) 
  121.             { 
  122.                 BigInteger total = new BigInteger("0" ); //initialise à 0   
  123.                 Enumeration enu = associationProduitsPrix.keys(); 
  124.                 while (enu.hasMoreElements()) 
  125.                 { 
  126.                     Checkbox check = (Checkbox) enu.nextElement(); 
  127.                     if (check.getState()) // si un check a été coché   
  128.                     { 
  129.                         BigInteger prix = (BigInteger) 
  130.                                           associationProduitsPrix.get(check); 
  131.                         total = total.add(prix); 
  132.                     } 
  133.                 } 
  134.                 JOptionPane.showMessageDialog(null, 
  135.                                               "Total : " + total + " \u20ac" ); 
  136.             } 
  137.         }); 
  138.     } 
  139.             public void actionPerformed(ActionEvent event) { 
  140.                 if (event.getSource() == quitter) { 
  141.                     dispose(); 
  142.                     System.exit(0); 
  143.                 } 
  144.             } 
  145.             public static void main(String[] args) { 
  146.                 Frame f = new carte(); 
  147.                 f.pack(); 
  148.                 f.show(); 
  149.             } 
  150.         }


 
 :(

mood
Pub
Posté le 18-08-2005 à 13:52:20  
 

n°14666
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 23-08-2005 à 16:40:39  
 

je ne sais pas si tu as avancé mais j'ai apporté quelques corrections à ton code
 
le format de fichier que j'ai utilisé est  
 

libelle_0 = salade
prix_0  = 10.00
libelle_1 = melon
prix_1  = 2.00
libelle_2 = crêpe salée
prix_2  = 4.00


 
et le code suivant je ne me suis préoccupé que de la partie fonctionnelle et pas du tout de la mise ne forme de la fenêtre de sortie.
A toi de jouer  ;)  
 

Code :
  1. package com.carte_creperie.test;
  2. import java.awt.Button;
  3. import java.awt.Checkbox;
  4. import java.awt.Color;
  5. import java.awt.FlowLayout;
  6. import java.awt.Frame;
  7. import java.awt.Label;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.WindowAdapter;
  11. import java.awt.event.WindowEvent;
  12. import java.math.BigDecimal;
  13. import java.util.Enumeration;
  14. import java.util.Hashtable;
  15. import javax.swing.JOptionPane;
  16. import javax.swing.*;
  17. import java.awt.Choice;
  18. import java.util.Properties;
  19. import java.io.*;
  20. import java.awt.*;
  21. public class carte extends Frame implements ActionListener
  22. {
  23. private Properties props = new Properties();
  24. private Hashtable associationProduitsPrix= new Hashtable();
  25. private Button bouton;
  26. private Button quitter;
  27. class WindowEventHandler extends WindowAdapter
  28. {
  29.  public void windowClosing(WindowEvent we)
  30.  {
  31.   dispose();
  32.  }
  33. }
  34. public carte()
  35. {
  36.  super("creperie" );
  37.  addWindowListener(new WindowEventHandler());
  38.  // Lit les données du fichier de propriétés   
  39.  //Properties props = new Properties();
  40.  try
  41.  {
  42.   props.load(new FileInputStream("carte.txt" ));
  43.  }
  44.  catch (FileNotFoundException e)
  45.  {
  46.   System.err.println("Fichier carte.txt non trouvé" );
  47.  }
  48.  catch (IOException e)
  49.  {
  50.   System.err.println("Impossible de lire le fichier carte.txt" );
  51.  }
  52.  // Création des champs   
  53.  //nombre d'article = au nombre de clé dans le fichier properties
  54.  //puisque chaque article forme un couple de clés libellé/prix
  55.  int length=props.size()/2;
  56.  for (int i=0;i<length;i++)
  57.  {
  58.   String valeur = props.getProperty("libelle_"+i);
  59.   if (valeur!=null)
  60.   {
  61.    Checkbox checkbox = new Checkbox(valeur);
  62.    add(checkbox);
  63.    String prix = props.getProperty("prix_"+i);
  64.    Label label = new Label(prix);
  65.    add(label);
  66.    // ajout dans la table de hash pour le calcul du prix
  67.    // la clé étant l'objet chechbox correspondant à l'article  
  68.    associationProduitsPrix.put(checkbox, new BigDecimal(prix));
  69.   }
  70.  }
  71.  // on met les boutons
  72.  bouton = new Button("ticket" );
  73.  add(bouton);
  74.  quitter = new Button("quitter l'application" );
  75.  add(quitter);
  76.  // on intialise les évènements sur les boutons
  77.  initBoutonsListeners();
  78.  // Initialise la fenêtre   
  79.  setLayout(new FlowLayout()); //sinon n'affiche qu'un seul element ds la fenetre   
  80.  setBackground(Color.yellow);
  81.  setForeground(Color.black);
  82.  quitter.addActionListener(this);
  83. }
  84. // Initialise les évènements des boutons   
  85. private void initBoutonsListeners()
  86. {
  87.  bouton.addActionListener(new ActionListener()
  88.  {
  89.   public void actionPerformed(ActionEvent e)
  90.   {
  91.    BigDecimal total = new BigDecimal("0.00" ); //initialise à 0   
  92.    Enumeration enu = associationProduitsPrix.keys();
  93.    while (enu.hasMoreElements())
  94.    {
  95.     Checkbox check = (Checkbox)enu.nextElement();
  96.     if (check.getState()) // si un check a été coché   
  97.     {
  98.      BigDecimal prix = (BigDecimal)associationProduitsPrix.get(check);
  99.      total = total.add(prix);
  100.     }
  101.    }
  102.    JOptionPane.showMessageDialog(null, "Total : " + total + " \u20ac" );
  103.   }
  104.  });
  105. }
  106. public void actionPerformed(ActionEvent event)
  107. {
  108.  if (event.getSource() == quitter)
  109.  {
  110.   dispose();
  111.   System.exit(0);
  112.  }
  113. }
  114. public static void main(String[] args)
  115. {
  116.  Frame f = new carte();
  117.  f.pack();
  118.  f.setSize(250,250);
  119.  f.show();
  120. }
  121. }


Message édité par m@noo le 23-08-2005 à 16:42:56
n°14695
crapaud
Profil : Jeune recrue
Posté le 25-08-2005 à 22:26:41  
 

alors dejà je voudrais m'excuser parce que je ne te reponds que maintenant!!
je ne t'avais pas zapé du genre "je te prends ton code et je te remercie pas !"
j'ai testé ton code que tu m'as donné si gentiement
ça ne marchait pas et je me suis aperçu que j'avais pas mis " libelle_0 " comme j'ai pu voir ddans ton code avec "("libelle_"+i)" et après dans ton fichier texte, que tu m'as mis...
voilà donc il marche très bien ton code (j'ai rajouté mes bouttons ect...)
c'est super sympas de ta part!!
je suis soulagée...
mais une dernière question :  
je voudrais juste que tu me mettes sur la voie en ce qui conserne le ComboBox
je m'explique :  pour chaque plat je voudrais pouvoir mettre 1, 2 ou plus de quantité
donc si tu pouvais me mettre sur la voie...
je t'en demande peut être beaucoup, vu comment tu m'as bien aidé!!
mais juste une petite piste, s'il y a juste un petit truc qui manque (pour le ComboBox) pour mettre plusieurs quantités..
merci beaucoup!!

n°14697
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 26-08-2005 à 12:07:04  
 

y'a pas de mal mais je suis content quand même que çà te serve.
 
Bon pour ta combo de quantité de produit, le plus simple est de l'associer comme le prix dans la hashtable.
Hop un peu de programmation objet : on va se créer un nouvel objet Produit (une nouvelle classe donc ou un nouveau fichier Produit.java) qui nous permettra d'y conserver le prix et la combo correspondante.
 
Voilà à quoi çà ressemble
 

Code :
  1. package com.carte_creperie.test;
  2. import java.awt.Choice;
  3. import java.math.BigDecimal;
  4. public class Produit
  5. {
  6. private BigDecimal prix;
  7. private Choice comboQuantite;
  8. /**
  9.  * @return
  10.  */
  11. public Choice getComboQuantite()
  12. {
  13.  return comboQuantite;
  14. }
  15. /**
  16.  * @return
  17.  */
  18. public BigDecimal getPrix()
  19. {
  20.  return prix;
  21. }
  22. /**
  23.  * @param choice
  24.  */
  25. public void setComboQuantite(Choice choice)
  26. {
  27.  comboQuantite = choice;
  28. }
  29. /**
  30.  * @param decimal
  31.  */
  32. public void setPrix(BigDecimal decimal)
  33. {
  34.  prix = decimal;
  35. }
  36. }


 
ensuite dans la classe Carte au niveau de la boucle d'alimentation on ajoute les lignes suivantes. Pour la combo à voir comment tu veux y mettre les valeurs, j'ai juste repris ton exemple avec 2 valeurs "en dur".
Pas besoin d'import on est dans le même package et la classe Produit par défaut est en protected.
 

Code :
  1. Choice combo = new Choice(); 
  2. combo.add("1" ); 
  3. combo.add("2" );
  4. add(combo);
  5. Produit produit = new Produit();
  6. produit.setComboQuantite(combo);
  7. produit.setPrix(new BigDecimal(prix));


 
on change bien évidemment l'alimentation de la hashtable par
 

Code :
  1. associationProduitsPrix.put(checkbox, produit);


 
Pour le calcul du prix suffit de remplacer par

Code :
  1. Produit produit = (Produit)associationProduitsPrix.get(check);
  2. BigDecimal prix = produit.getPrix();
  3. BigDecimal quantite = new BigDecimal (new BigInteger(produit.getComboQuantite().getSelectedItem()));
  4. total = total.add(prix.multiply(quantite));


 
voili voilou


Message édité par m@noo le 26-08-2005 à 12:10:29
n°14700
crapaud
Profil : Jeune recrue
Posté le 26-08-2005 à 15:28:42  
 

okii !!
là je ne suis pas chez moi donc je ne peux pas reflechir vraiment sur ce bout de code
mais j'aurais une question :  
est ce que à la place de  

Code :
  1. public Choice getComboQuantite()
  2.     {
  3.         return comboQuantite;
  4.     }


je pourrais mettre :

Code :
  1. public Choice getComboQuantite =  new Choice(choice);
  2. ou
  3. Choice ComboQuantite = new Choice(choice);


 

Code :
  1. public BigDecimal getPrix = new BigDecimal(decimal);
  2. ou
  3. public BigDecimal prix = new BigDecimal(decimal);


 
 

n°14701
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 26-08-2005 à 15:47:02  
 

Oula non !
Attention j'ai bien dit qu'il s'agissait d'une nouvelle classe
Donc tu vas mettre ce code dans un nouveau fichier Produit.java différent de ton fichier Carte.java
Cela définit l'objet Produit (caractéristiques=attributs et comportements=méthodes) de ce dernier afin de l'utiliser dans la classe carte.
Par convention on définit en java une classe par fichier.
 
Si tu regardes bien ton objet combo est instancié à chaque fois dans la boucle (classe Carte)
Choice combo = new Choice();
 
puis affecté à une nouvelle instance de l'objet produit (instancié Produit produit = new Produit())
produit.setComboQuantite(combo);
 
idem pour le prix
produit.setPrix(new BigDecimal(prix));
 
ensuite c'est l'objet complet qui est stocké en hashtable avec comme clé la case à cocher
on peut alors schématiser comme cela
 
case=>produit et  
produit=>prix
produit=>combo
 
chaque case pointe bien vers un produit qui possède un prix et une combo.
 

n°14702
crapaud
Profil : Jeune recrue
Posté le 26-08-2005 à 16:29:25  
 

à coté de la plaque je suis...
mais je crois que , en plus de ma grande difficulté avec le code JAVA meme si je comprends parfois qq truc, j'ai quelque problème de vocabulaire
je trouve des définitions mais qui sont pas très claires car trop souvent il manque des exemples simples...
je vais bientôt rentrer chez moi et je compte tafé en rentrant ou dans la soirée...
en faite ça me saoule de ne pas pouvoir faire quelque chose toute seule...
je suis contente que tu m'aide, c'est pas spécialement le problème et je en te banis pas, bien au contraire ;)  (mais je pense que tu m'as comprise)
je pense aussi que JAVA est quelque chose de logique mais je n'ais pas encore atteint cette logique, il me manque un déclic ou ché pas
en plus des fois je reste bloquée sur des conneries, des trucs balo, pour les personnes totalement à l'aise avec la programation...

n°14703
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 26-08-2005 à 16:41:40  
 

j'avais bien compris que tu débutais  ;)  
et ne t'inquiètes pas car même pour certains habitués avec la programmation procédurale il n'est pas forcément facile de penser objet, moi le premier  :D  
 
en cherchant un peu (+programmation +orientée +objet)
j'ai trouvé çà qui pourra sûrement t'aider en ce qui concerne la POO et son vocabulaire.
Très utile pour java car tu ne pourras pas y couper pour programmer correctement.
 
http://www.commentcamarche.net/poo/poointro.php3
http://www.laltruiste.com/document [...] e/poo.html
 

n°14706
crapaud
Profil : Jeune recrue
Posté le 26-08-2005 à 22:49:49  
 

oki merci!!
mais ce bout de oode

Code :
  1. produit.setPrix(new BigDecimal(prix));


doit bien être dans le constructeur?

n°14719
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 29-08-2005 à 08:42:15  
 

relis bien ce que j'ai écris  ;)  
 

Citation :

ensuite dans la classe Carte au niveau de la boucle d'alimentation on ajoute les lignes suivantes


 
elle est bien dans le constructeur de la classe Carte.
 
donc quelque part ici

Code :
  1. for (int i=0;i<length;i++)
  2. {
  3. String valeur = props.getProperty("libelle_"+i);
  4. if (valeur!=null)
  5. {
  6.  Checkbox checkbox = new Checkbox(valeur);
  7.  add(checkbox);
  8.  String prix = props.getProperty("prix_"+i);
  9.  Label label = new Label(prix);
  10.  add(label);
  11.  Choice combo = new Choice(); 
  12.  combo.add("1" ); 
  13.  combo.add("2" );
  14.  add(combo);
  15.  Produit produit = new Produit();
  16.  produit.setComboQuantite(combo);
  17.  produit.setPrix(new BigDecimal(prix)); 
  18.  // ajout dans la table de hash pour le calcul du prix
  19.  // la clé étant l'objet chechbox correspondant à l'article  
  20.  associationProduitsPrix.put(checkbox, produit);
  21. }
  22. }


n°14730
crapaud
Profil : Jeune recrue
Posté le 31-08-2005 à 03:27:04  
 

me revoilà!!
je ne sais pas pourquoi, mais j'ai eut une erreur qui revenait souvent, un problème avec un main
alors, comme j'étais sure d'avoir tout suivi à la lettre, j'ai recreé un nouveau projet sinon j'avais plus de cheveux lol
alors donc tout marche et je ne sais pas quoi te dire à part un grand merci!
vraiment, parce que grâce à toi j'ai réussi (enfin tu as réussi) ce petit projet
mais je voudrais savoir (simple curiosité) quelle étude as tu fait ?
parce que bon voilà, t'es quand même bien calé en java
et en combien de temps as tu su programmer sans l'aide de personne?
uestion qui peut sembler idiote mais jaimerais savoir quand même ^^

n°14731
m@noo
je javaïse, je phpïse ^=^
Profil : Habitué
Posté le 31-08-2005 à 09:46:43  
 

Réponse en MP  ;)

  FORUM Rue-Montgallet.com
  Programmation
  Java

  deprime avec mon code java :(

© 2000-2024 Forum.rue-montgallet.com - Tous droits réservés