× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 probleme de calcul en JAVA
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
oceane751
  Posté le 25/07/2005 @ 03:04 
Aller en bas de la page 
Petite astucienne
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 : // 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 !!

Modifié par oceane751 le 26/07/2005 00:27
Publicité
breizhbugs
 Posté le 25/07/2005 à 10:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Arrete de mettre ton code source entre des balise "code"! (edite ton message et supprime les, il sera beaucoup plus lisible)
oceane751
 Posté le 26/07/2005 à 00:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
oui merci !!
breizhbugs
 Posté le 26/07/2005 à 11:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Pour ton addition, tu fais ca: 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");<-Il faut le sortir de la boucle ____} __} } Sinon ce serait bien d'avoir une copie d'ecran de ton interface

Modifié par breizhbugs le 26/07/2005 11:15
oceane751
 Posté le 26/07/2005 à 14:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
vi vi ca c'est ok!! mais merci de ta réponse... mais tu vois je voudrais rajouter des quantités pour chaques elements... donc j'utilise des ComboBox (par exple prendre 2 salades et 3 melons..) et est ce le meme procedé que pour les checkbox( au niveau du calcul du prix total)? merci!!
breizhbugs
 Posté le 26/07/2005 à 15:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
bon je suppose que les combo c'est une liste deroulante ou il y a un nombre? donc en resume tu as: une checkbox, un label de produit et une quantité sur une ligne. le serveur coche la checkbox "salade" et indique ensuite la quantité par la liste deroulante? tu devrais mettre un champ texte pour la quantité que tu initialise a 1 quand la checkbox est coché. ensuite le seveur modifie le nombre si besoin.(sinon la combobox doit avoir une liste grande pour les grandes commandes) Tu n'aurais alors qu'a retrouver ce nombre par une fonction deja presente je crois: Reel total=0; pour chaque produit: { __Reel totalproduit=0; __si checkbox[produit] est coché __{ ____totalproduit = quantité.toNombre() * prix[produit]; ____imprimerLibelléProduit(produit, quantité.toNombre(), prix[produit], totalproduit); ____total = total + totalproduit; __} } imprimerLibellé("Total:", total); et ton ticket de caisse est pret!

Modifié par breizhbugs le 26/07/2005 15:37
oceane751
 Posté le 26/07/2005 à 17:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
en faite, un ticket de caisse = une seule commande = une seule table (d'une creperie) donc oui pour la salade (par exemple) il y a un label, une checkbox et la quantité pour cette commande bon je vais etudier ce que tu m'as proposé et je reveindrais te dire où j'en suis... merci pour ton aide c'est sympas..[hello]
breizhbugs
 Posté le 26/07/2005 à 18:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Ca serai bien d'avoir une copie d'ecran de l'interface! Sinon est ce que tu genere ton interface en statique ou en dynamique? En dynamique elle peut s'adapter a un changement de menu: tu creer une classe produit class produit extend Panel { __string libelle; //"crepe campagnarde" __double prix; //5.5euro __int quantité; // combien de fois cette table a t elle commandé cette crepe /* L'idee est simple: tu cree un fichier texte qui contient: "le nom" "le prix" Ensuite une fonction de ta fenetre lit le fichier et pour chaque "nom" trouve construit une instance de "produit" et l'ajoute dans la fenetre */ __produit(string lib, double prx); // le constructeur //pour l'interface __CheckBox oui; // m'a t on commandé? __Label quiSuisje; // on y met le nom du produit __ComboBox selectionQuantité; //pour que le serveur indique la quantité commandé __Label prix; // on y met le prix __Label totalprix; // quantité * prix + les fonctions... } Dans le constructeur tu ajoutes les elements ci dessus au Panel produit et dans ta fenetre principale tu ajoute ta classe produit Comme ca si la creperie invente une nouvelle crepe, il suffit de rajouter au fichier texte son nom et son prix, pas besoin de modifier le programme
oceane751
 Posté le 26/07/2005 à 20:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
donc voici l'interface, bon je sais c'est un peu le b***** mais je verrais cela après [img]http://C:\Documents and Settings\Le Canard\Mes documents\Mes images\creperie.jpeg[/img] mais c'est vrai que se serait parfait (j'avoue que je n'y avais pas pensé) si toutes mes données étaient dans un fichier text mais va falloir changer beaucoup de chose à mon code.... je suis débutante et je commence à prendre peur s'il faut que je change beaucoup de chose[desapprouve]

Modifié par oceane751 le 26/07/2005 20:44
Publicité
oceane751
 Posté le 26/07/2005 à 21:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
tu vois l'image ou je me suis plantée ?
breizhbugs
 Posté le 27/07/2005 à 10:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
tu vois l'image ou je me suis plantée ?
Plantée! Pour mettre une image sur un forum, il faut que tu l'heberge sur un serveur: 1- http://www.imageshack.us/ 2- tu clic sur "parcourir" et tu choisis ton image 3- tu clic sur "host it" 4- une autre page s'affiche, tu selection alors l'adresse de "thumbnail for forum (1)" que tu copie (CTRL+C) et que tu colle dans ton post (CTRL+V)
je suis débutante et je commence à prendre peur s'il faut que je change beaucoup de chose
Tu te debrouilles deja mieux que moi en java! Ce qu'il faut c'est bien reflechir au programme avant de le commencer. Bon courage!

Modifié par breizhbugs le 27/07/2005 10:38
oceane751
 Posté le 27/07/2005 à 14:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
ok merci... donc voila : [URL=http://img57.imageshack.us/my.php?image=creperie8fs.jpg][IMG]http://img57.imageshack.us/img57/795/creperie8fs.th.jpg[/IMG][/URL]
breizhbugs
 Posté le 27/07/2005 à 16:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Hem c'est bordelique! pour faire de l mise en page en java il faut diviser ta fenetre en tableau: 1- Je te conseille donc de diviser ta fenetre en un tableau de 1 colonne et autant de ligne qu'il y a de produit(1 produit = 1 ligne, c'est pour cela que ma classe produit descend de Panel) 2- Ensuite dans la classe produit, tu divises le Panel en une ligne et en autant de colonnes qu'il y a de widget: [URL="http://img99.imageshack.us/my.php?image=test0xu.jpg"][IMG]http://img99.imageshack.us/img99/8256/test0xu.th.jpg[/IMG][/URL] REgarde la doc concernant "GridLayout"

Modifié par breizhbugs le 27/07/2005 16:11
oceane751
 Posté le 27/07/2005 à 16:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
ok mais bon maintenant je dois faire mon code et utliser un ficher texte car si je veux modifier ou effacer un element de ma carte se sera beaucoup plus pratique donc voila suis un peu deg je dois tou refaire [triste]
breizhbugs
 Posté le 27/07/2005 à 17:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
oceane751 a écrit : donc voila suis un peu deg je dois tou refaire [triste]
Vois le bon coté des choses, cela t'aura permit de decouvrir un peu plus le java et maintenant tu avanceras plus vite! et une grande partie de ce que tu as fais peut surement etre reutilisé! Bon courage.[clindoeil]
oceane751
 Posté le 27/07/2005 à 17:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petite astucienne
oui c'est sur!!! merci!! tchuss[hello]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
83,93 €Disque dur externe portable Seagate Basic 4 To USB 3.0 à 83,93 €
Valable jusqu'au 14 Août

Amazon fait une promotion sur le disque dur externe portable Seagate Basics d'une capacité de 4 To qui passe à 83,93 € livré gratuitement. Ce disque dur externe portable au format 2,5 pouces dispose d'une interface USB 3.0 compatible USB 2.0. Une excellente affaire pour ce disque dur qui offre des débits de 115 Mo/s. Il n'est pas soudé et est donc démontable si vous souhaitez le réutiliser ailleurs (console, NAS, PC).


> Voir l'offre
19,99 €Micro clé USB 3.1 Sandisk Ultra Fit 128 Go à 19,99 €
Valable jusqu'au 15 Août

Amazon fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 128 Go qui passe à 19,99 €. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. 


> Voir l'offre
22,17 €Souris sans fil Logitech M280 à 22,17 €
Valable jusqu'au 17 Août

Amazon fait une petite promotion sur la souris sans fil Logitech M280 qui passe à 22,17 €. On la trouve ailleurs à partir de 30 €. Sa forme profilée est adaptée aux droitiers. Son autonomie est de 18 mois (pile AA que vous pourrez remplacer).


> Voir l'offre

Sujets relatifs
Calcul du jour d'après - - > java
Problème java (algorithme vers java)
probleme jdom java
problème de java
probleme avec des tableChanged en java
Problème java (pages perso AOL)
probleme de compil. sous java
probleme avec les JTable en java
probleme avec java
probleme avec java
Plus de sujets relatifs à probleme de calcul en JAVA
 > Tous les forums > Forum Autres langages