Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 [Java] deprime avec mon code :( Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
oceane751
Forumeur fréquent
Forumeur fréquent


BTS IG - Option développeur 2ème année
Sexe: Sexe:Féminin
Messages: 93

MessagePosté le: Mar 16 Aoû 2005 - 16:40 Répondre en citantRevenir en haut

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 a faire ça marche pas..
je vous remets le code (et oui encore Sad )

Code:


package com.carte_creperie.test;

import java.awt.Button;
import java.awt.Checkbox;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.math.BigInteger;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JOptionPane;
import javax.swing.*;
import java.awt.Choice;
import java.util.Properties;
import java.io.*;
import java.awt.*;

public class carte extends Frame implements ActionListener{
   Properties props = new Properties();
   Hashtable associationProduitsPrix;

   private GridLayout grid;
   private Label entree;
   private Checkbox salade;
   private Label lab;
   private Label lab2;
   private Label lab3;
   private Choice maCombo;
   private Checkbox melon;
   private Label cs;
   private Checkbox jf;
   private Checkbox complete;
   private Label csu;
   private Checkbox su;
   private Checkbox choc;
   private Label boi;
   private Checkbox coca;
   private Checkbox cidre;
   private Button bout;
   private Button quitter;


   class WindowEventHandler extends WindowAdapter {
      public void windowClosing(WindowEvent we) {
         dispose();
      }
   }

   public carte() {
      super("creperie");

      addWindowListener(new WindowEventHandler());

      // Lit les données du fichier de propriétés
      Properties props = new Properties();
      try {
         props.load(new FileInputStream("carte.txt"));
      } catch (FileNotFoundException e) {
         System.err.println("Fichier carte.txt non trouvé");
      } catch (IOException e) {
         System.err.println("Impossible de lire le fichier carte.txt");
      }

      // Création des champs
     // grid = new GridLayout(5, 0); //(ligne,colonne)
      TextField text = new TextField ("numero de table");
      entree = new Label("entree");
      lab = new Label(props.getProperty("prix"));
      salade = new Checkbox(props.getProperty("libelle"));

      maCombo = new Choice();
       lab2 = new Label(props.getProperty("prix2"));
      melon = new Checkbox(props.getProperty("libelle2"));
      cs = new Label("crepe salee");

      lab3 = new Label(props.getProperty("prix3"));
      jf = new Checkbox(props.getProperty("libelle3"));
      complete = new Checkbox("complete");
      csu = new Label("crepe sucree");
      su = new Checkbox("crepe au sucre");
      choc = new Checkbox("crepe au chocolat");
      boi = new Label("boisson");
      coca = new Checkbox("coca cola");
      cidre = new Checkbox("cidre");
      bout = new Button("ticket");
      quitter = new Button("quitter l'application");



      // Initialise la fenêtre
      setSize(250, 250);
      setLayout(new FlowLayout()); //sinon n'affiche qu'un seul element ds la fenetre
      setBackground(Color.yellow);
      setForeground(Color.black);



      // Ajoute les champs à la fenêtre
      add(text);
      add(entree);
      add(salade);
      add(lab);
      add(maCombo);
      add(lab2);
      add(melon);
      maCombo.add("1");
      maCombo.add("2");
      add(cs);
      add(lab3);
      add(jf);
      add(complete);
      add(csu);
      add(su);
      add(choc);
      add(boi);
      add(coca);
      add(cidre);
      add(bout);
      add(quitter);
      // quitter.addActionListener(this);

      // Initialise les prix
   }
      private void initPrix() {
      associationProduitsPrix = new Hashtable();
      associationProduitsPrix.put(salade, new BigInteger(props.getProperty("prix")));
      associationProduitsPrix.put(melon, new BigInteger(props.getProperty("prix2")));
      }
      // Initialise les évènements des boutons


    private void initBoutonsListeners() {
        bout.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                BigInteger total = new BigInteger("0"); //initialise à 0
                Enumeration enu = associationProduitsPrix.keys();
                while (enu.hasMoreElements())
                {
                    Checkbox check = (Checkbox) enu.nextElement();
                    if (check.getState()) // si un check a été coché
                    {
                        BigInteger prix = (BigInteger)
                                          associationProduitsPrix.get(check);
                        total = total.add(prix);
                    }
                }
                JOptionPane.showMessageDialog(null,
                                              "Total : " + total + " \u20ac");
            }
        });
    }
            public void actionPerformed(ActionEvent event) {
                if (event.getSource() == quitter) {
                    dispose();
                    System.exit(0);
                }
            }

            public static void main(String[] args) {
                Frame f = new carte();
                f.pack();
                f.show();
            }
        }



Sad
Voir le profil de l'utilisateurEnvoyer un message privé

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
findwin
Forumeur occasionnel
Forumeur occasionnel


Post-BTS

Messages: 29

MessagePosté le: Mer 17 Aoû 2005 - 06:36 Répondre en citantRevenir en haut

je ne connais pas java, mais il me semble que tu tu devrais recuperer les valeur de ta hashtable grace aux noms ou libélés des checkbox, pas avec les check box eux même...

un truc du genre:

Code:

while (enu.hasMoreElements())
                {
                    Checkbox check = (Checkbox) enu.nextElement();
                    if (check.getState()) // si un check a été coché
                    {
                        BigInteger prix = (BigInteger)
                                          associationProduitsPrix.get(check.getLabel());
                        total = total.add(prix);
                    }
                }
Voir le profil de l'utilisateurEnvoyer un message privé
queskispace
Accro à Web-IG
Accro à Web-IG


BTS IG - Option développeur Diplômé
Sexe: Sexe:Masculin
Messages: 194
Localisation: En ce moment, derrière mon pc

MessagePosté le: Mer 17 Aoû 2005 - 18:36 Répondre en citantRevenir en haut

En fait il n'y a pas de probleme avec la table de hashage, tu peux te servir des objets puisqu'il y'a une méthode getHashVal pour chaque objets, et c'est elle qui sera appellé lors de l'insertion dans la table de hashage.

Pour ton problème j'ai pas pus tester comme il manque un fichier, mais je me demande si ton problème ne viens pas parsque tu utilise la classe BigInteger ou si ton fichier de Propriété contient les bonnes valeurs. Essai de verifier deja que ta table de hashage contiens les bonnes valeurs.

Je te conseille aussi d'utiliser ta propre classe pour les entier avec juste un getVal et un setVal pour encapsuler les entiers, ca t'evitera d'utiliser la classe BigInteger qui n'est pas vraiment faite pour des calculs simple et en plus tu utilisera moins de mémoire (meme si ca ne doit pas avoir trop d'impact dans ton programme)

Si tu peux poster le fichier de Propriété je pourrais peut etre un peu plus t'aider.

Bonne chance

_________________
Tout a une fin sauf le saucisson qui en a deux
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum