Auteur |
Message |
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Lun 25 Juil 2005 - 03:07 |
|
bonjour à tous!!
voila comme le dit le sujet, je rencontre un problee lorsque je veux faire l'addition du prix dun "melon" et celui dune "salade"
en effet, mon code ne me donne que le prix du melon PUIS celui de la salade et il ne me fais pas l'addition des 2
ps : mon projet étant celui du calcul d'un prix total
voici mon code :
Code: |
// penser à mettre l'opportunité de choisir plusieurs fois le meme element
package com.creperiee.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.math.BigInteger;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JOptionPane;
public class Cartee extends Frame
{
Label entree = new Label("entree");
Checkbox salade = new Checkbox("salade");
Checkbox melon = new Checkbox("melon");
Label cs = new Label("crepe salee");
Checkbox jf = new Checkbox("jambon fromage");
Checkbox complete = new Checkbox("complete");
Label csu = new Label("crepe sucree");
Checkbox su = new Checkbox("crepe au sucre");
Checkbox choc = new Checkbox("crepe au chocolat");
Label boi = new Label("boisson");
Checkbox coca = new Checkbox("coca cola");
Checkbox cidre = new Checkbox("cidre");
Button bout = new Button("ticket");
Button quitter = new Button("quitter l'application");
Hashtable associationProduitsPrix;
public Cartee()
{
super("creperie");
initFrame();
addBouton();
initPrix();
initBoutonsListeners();
}
private void initFrame()
{
setSize(250, 250);
setLayout(new FlowLayout()); //sinon n'affiche qu'un seul element ds la fenetre
setVisible(true);
setBackground(Color.yellow);
setForeground(Color.black);
}
private void addBouton()
{
add(entree);
add(salade);
add(melon);
add(cs);
add(jf);
add(complete);
add(csu);
add(su);
add(choc);
add(boi);
add(coca);
add(cidre);
add(bout);
add(quitter);
}
private void initPrix()
{
associationProduitsPrix = new Hashtable();
associationProduitsPrix.put(salade, new BigInteger("10"));
associationProduitsPrix.put(melon, new BigInteger("5"));
}
private void initBoutonsListeners()
{
quitter.addActionListener(new ListenerQuitter());
bout.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
BigInteger total = new BigInteger("0");
Enumeration enu = associationProduitsPrix.keys();
while (enu.hasMoreElements())
{
Checkbox check = (Checkbox)enu.nextElement();
if (check.getState())
{
BigInteger prix = (BigInteger)associationProduitsPrix.get(check);
total = total.add(prix);
JOptionPane.showMessageDialog (null, "Total : " + total + " \u20ac");
}
}
}
});
}
class ListenerQuitter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
Frame f = new Cartee();
}
}
|
de plus, est ce que vous pouvez me mettre sur la voie pour un autre truc..
en efet je viens de m'apercevoir que l'on ne peut pas (celon mon code) prendre plusieurs fois le meme element comme par exemple : 2 melon et 3 salade, donc si quelqu'un pouvait me mettre sur un piste, m'aider quoi...
merci beaucoup !! |
|
|
|
|
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. |
mrmabo
Accro à Web-IG
Sexe:
Messages: 226
Localisation: Amiens
|
Posté le:
Lun 25 Juil 2005 - 03:20 |
|
juste une remarque rapport a ton code
c'est très brut
si tu veux des coups de main faut que rapidement on puisse se plonger dedans donc pour cela il faut des commentaires sa aide ceux qui essayent de t'aider mais sa t'aide toi aussi quand tu replonges dans un vieux truc
tu verras pour tes ptis si parmis les 5 tu en as une très vieille et que tu veux la réviser si t'as pas de commentaire c'est la galère |
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Lun 25 Juil 2005 - 03:31 |
|
mrmabo a écrit: |
juste une remarque rapport a ton code
c'est très brut
si tu veux des coups de main faut que rapidement on puisse se plonger dedans donc pour cela il faut des commentaires sa aide ceux qui essayent de t'aider mais sa t'aide toi aussi quand tu replonges dans un vieux truc
tu verras pour tes ptis si parmis les 5 tu en as une très vieille et que tu veux la réviser si t'as pas de commentaire c'est la galère |
oui c'est vrai...
je vais y penser plus souvent merci !! |
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Lun 25 Juil 2005 - 04:18 |
|
mrmabo a écrit: |
juste une remarque rapport a ton code
c'est très brut
si tu veux des coups de main faut que rapidement on puisse se plonger dedans donc pour cela il faut des commentaires sa aide ceux qui essayent de t'aider mais sa t'aide toi aussi quand tu replonges dans un vieux truc
tu verras pour tes ptis si parmis les 5 tu en as une très vieille et que tu veux la réviser si t'as pas de commentaire c'est la galère |
mais dit moi, est ce que tu peux m'aider?
me donner quelques pistes pour faire le prix total et pour mettre des quantités pour les differents elements que je propose?
parce que je suis un peu perdue, j'ai vu une classe Math mais je ne crois pas que se soit vraiment approprié pour ce que je cherche...
voila merci !! |
|
|
|
|
mrmabo
Accro à Web-IG
Sexe:
Messages: 226
Localisation: Amiens
|
Posté le:
Lun 25 Juil 2005 - 04:35 |
|
je connais pas du tout le java :-/
et je pige pas tout ouverture facile m'a cassé la tête en + |
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Lun 25 Juil 2005 - 04:59 |
|
mrmabo a écrit: |
je connais pas du tout le java :-/
et je pige pas tout ouverture facile m'a cassé la tête en + |
lollllllll
yearrr toi aussi tu aimes te prendre la tete sur des enigmes aussi tordues les une que les autres??
suis bloké sur une enigme
ca commence a menervé
t'en ais à quel niveau? |
|
|
|
|
mrmabo
Accro à Web-IG
Sexe:
Messages: 226
Localisation: Amiens
|
Posté le:
Lun 25 Juil 2005 - 05:43 |
|
j'en etais a la 10 j'crois mais j'ai laché l'affaire j'ai fait un peu de php now je passe au c#
^^
eclate toi bien ac ce fichu truc moi sa me donne la nausé
et stop le hors sujet :p |
|
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Lun 25 Juil 2005 - 09:07 |
|
Ton problème viens du fait que ta fonction showMessageDialog est dans ta boucle while.
Code: |
public void actionPerformed(ActionEvent e) {
BigInteger total = new BigInteger("0");
Enumeration enu = associationProduitsPrix.keys();
while (enu.hasMoreElements()) {
Checkbox check = (Checkbox) enu.nextElement();
if (check.getState()) {
BigInteger prix = (BigInteger) associationProduitsPrix.get(check);
total = total.add(prix);
}
}
JOptionPane.showMessageDialog(null, "Total : " + total+ " \u20ac");
}
|
Sinon ta fenetre ne se rafraichis pas automatiquement au démarrage, il faut la redimensionné pour afficher les boutons, pour corriger ce problème, sois tu appelle la méthode pack(), soit tu appelle la méthode setVisible() après avoir rajouter les composants.
Pour permettre d'avoir plusieurs fois le meme element ce que tu peux faire c'est au lieu d'une checkbox mettre un inputField et forcer la valeur en numérique, puis recupérer la valeur. |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mar 26 Juil 2005 - 00:39 |
|
queskispace a écrit: |
Ton problème viens du fait que ta fonction showMessageDialog est dans ta boucle while.
Code: |
public void actionPerformed(ActionEvent e) {
BigInteger total = new BigInteger("0");
Enumeration enu = associationProduitsPrix.keys();
while (enu.hasMoreElements()) {
Checkbox check = (Checkbox) enu.nextElement();
if (check.getState()) {
BigInteger prix = (BigInteger) associationProduitsPrix.get(check);
total = total.add(prix);
}
}
JOptionPane.showMessageDialog(null, "Total : " + total+ " \u20ac");
}
|
Sinon ta fenetre ne se rafraichis pas automatiquement au démarrage, il faut la redimensionné pour afficher les boutons, pour corriger ce problème, sois tu appelle la méthode pack(), soit tu appelle la méthode setVisible() après avoir rajouter les composants.
Pour permettre d'avoir plusieurs fois le meme element ce que tu peux faire c'est au lieu d'une checkbox mettre un inputField et forcer la valeur en numérique, puis recupérer la valeur. |
c'est super!! ca marche!! suis trop happy, erreur à la c**
et sinon, je sais que c'est un peu le boxon mais je prefère que mon code marche et après je ferais quelque modif consernant "la mise en page"
je vais chercher quelques informations consernant l'inputField...
merci encore pour ton aide !! |
|
|
|
|
oceane751
Forumeur fréquent
Sexe:
Messages: 93
|
Posté le:
Mar 26 Juil 2005 - 00:50 |
|
mrmabo a écrit: |
j'en etais a la 10 j'crois mais j'ai laché l'affaire j'ai fait un peu de php now je passe au c#
^^
eclate toi bien ac ce fichu truc moi sa me donne la nausé
et stop le hors sujet :p |
j'avour cé prise de tete parfois
oui alé stop, ta raison..
@ tte !! |
|
|
|
|
|