Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1790 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Ma caltoche ne marche pas !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ma caltoche ne marche pas !

n°1651664
Galdon
Posté le 01-12-2007 à 13:34:35  profilanswer
 

Bonjour, dans le cadre de mes études, je dois programmer une petite calculatrice de base (+,-,x,  en java, avec une interface graphique.  
 
Alors j'ai réussi a faire ca  
 
Elle marche bien (mis a part que la gui est moche, mal présentée...) mais seulement avec des nombres a 1 chiffre.  
 
Maintenant je voudrais faire la même chose avec des nombres a plusieurs chiffres, et a virgule.  
Faut que je saisisse ce que l'utilisateur tape dans une chaîne, et dés qu'il appui sur un touche d'opération, je parse la chaîne dans un Float et je fais l'opération.  
 
C'est ce que j'ai faire ici  
 
Mais ça ne marche pas, j'ai des erreurs assez violentes !  
 
J'implore donc votre aide pour terminer cette calculatrice.  
 
Merci

Message cité 2 fois
Message édité par Galdon le 01-12-2007 à 16:46:01

---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
mood
Publicité
Posté le 01-12-2007 à 13:34:35  profilanswer
 

n°1651691
sircam
I Like Trains
Posté le 01-12-2007 à 16:43:45  profilanswer
 

Galdon a écrit :

Alors j'ai réussi a faire ca


?
 

Galdon a écrit :

mais seulement avec des nombres a 1 chiffre.


Je ne vois pas bien en quoi manipuler des nombres à plus d'un chiffre ferait une différence?
 

Galdon a écrit :

C'est ce que j'ai faire ici


???
 

Galdon a écrit :

j'ai des erreurs assez violentes !


[:kiki]
 

Galdon a écrit :

J'implore donc votre aide pour terminer cette calculatrice.


Aide-nous à t'aider.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1651693
Galdon
Posté le 01-12-2007 à 16:47:54  profilanswer
 

Mince je suis désolé, j'ai édité mon message, et aprés cette édition, le bbcode a dégagé sans que je m'en rende compte -_-'
voila le repertoire au cas ou: http://finalclap.com/vrac/


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
n°1651708
sircam
I Like Trains
Posté le 01-12-2007 à 18:30:02  profilanswer
 

Galdon a écrit :

j'ai des erreurs assez violentes !


Mais encore?

 


EDIT: Ca ne te choque pas de déclarer et traiter chaque touche séparemment? Tu n'as pas une impression de code qui se répète?


Message édité par sircam le 01-12-2007 à 18:31:27

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1651709
Galdon
Posté le 01-12-2007 à 18:33:07  profilanswer
 

Quand j'appui sur une touche (n'importe laquelle), j'obtient ceci:

Citation :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:991)
    at java.lang.Float.parseFloat(Float.java:422)
    at calc_graph.press(calc_graph.java:139)
    at button_listener.actionPerformed(calc_graph.java:29)
    at java.awt.Button.processActionEvent(Button.java:392)
    at java.awt.Button.processEvent(Button.java:360)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
n°1651799
Galdon
Posté le 02-12-2007 à 13:23:15  profilanswer
 

Bon, en fait c'est la cause de ce pb est toute simple, la fonction concat() n'existe pas, je l'ai trouvé ici.
 
Maintenant, j'ai un probléme d'algorithme, quand je fais un calcul simple, par exemple 123.7 + 58.42, pas de pb, elle me donne bien le bon résultat, par contre quand je commence avec un nombre négatif, ex:-2+4, elle plante pas, mais elle affiche n'importe quoi. Idem quand je fais 26+4=30, +1=35  :??:.
 
Il y a un gros probléme d'algorithme, voici le bout de code qui effectue les calculs:

Code :
  1. public void press(ActionEvent e){
  2. pressed = (Button)e.getSource();
  3. bouton = pressed.getLabel();
  4. //si on doit faire une opération
  5. if(bouton == "+" || bouton == "-" || bouton == "x" || bouton == ":" || bouton == "=" || bouton == "C" ){
  6.  if (bouton == "C" ){
  7.   res = 0;
  8.   affichage = Float.toString(res);
  9.   nbre_tmp = "0";
  10.   op ="+";
  11.  }
  12.  else if (bouton == "=" ){
  13.   nbre=Float.parseFloat(nbre_tmp);
  14.   if (op=="+" )
  15.    res=calc.addition(res,nbre);
  16.   if (op=="-" )
  17.    res=calc.soustraction(res,nbre);
  18.   if (op=="x" )
  19.    res=calc.multiplication(res,nbre);
  20.   if (op==":" )
  21.    res=calc.division(res,nbre);
  22.   affichage = Float.toString(res);
  23.  }
  24.  else{
  25.   nbre=Float.parseFloat(nbre_tmp);
  26.   op = bouton;
  27.   System.out.println(nbre_tmp);
  28.   System.out.println(op);
  29.   if (op=="+" )
  30.    res=calc.addition(res,nbre);
  31.   if (op=="-" )
  32.    res=calc.soustraction(res,nbre);
  33.   if (op=="x" )
  34.    res=calc.multiplication(res,nbre);
  35.   if (op==":" )
  36.    res=calc.division(res,nbre);
  37.   affichage = bouton;
  38.   nbre_tmp = "0";
  39.  }
  40. }
  41. //si on a tapé un chiffre
  42. else{
  43.  nbre_tmp = nbre_tmp + bouton;
  44.  affichage = nbre_tmp;
  45. }
  46. System.out.println("res : \t\t"+res);
  47. System.out.println("op : \t\t"+op);
  48. System.out.println("nbre_tmp : \t"+nbre_tmp+"\n" );
  49. ecran.setText(affichage);
  50. }


 
Une idée ?


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
n°1651804
breizhbugs
Posté le 02-12-2007 à 13:52:33  profilanswer
 

Sur la calculatrice de windows il y a un bouton supplémentaire pour indiquer le signe...
Sinon pourqoi la  

Code :
  1. else{
  2.   nbre=Float.parseFloat(nbre_tmp);
  3.   op = bouton;
  4.   System.out.println(nbre_tmp);
  5.   System.out.println(op);
  6.   if (op=="+" )
  7.    res=calc.addition(res,nbre);
  8.   if (op=="-" )
  9.    res=calc.soustraction(res,nbre);
  10.   if (op=="x" )
  11.    res=calc.multiplication(res,nbre);
  12.   if (op==":" )
  13.    res=calc.division(res,nbre);
  14.   affichage = bouton;
  15.   nbre_tmp = "0";
  16. }


tu fais le calcul alors que tu le fais aussi dans la partie ' if (bouton == "=" ) ' ?


Message édité par breizhbugs le 02-12-2007 à 13:56:09
n°1651810
Galdon
Posté le 02-12-2007 à 14:24:17  profilanswer
 

Oui c'est un peu répétitif, il y a matiére a optimisation !
Sinon d'ou provient le probléme de 26+4=30, +1=35 ?


---------------
cours pour débuter sous 3d studio max - Photoshop pour les nuls
n°1651812
breizhbugs
Posté le 02-12-2007 à 14:39:14  profilanswer
 

J'ai pas testé le code (pas de java d'installé!)
Quand tu fais '=' tu n'efface pas nombre_tmp donc il reste en memoire et egal a 4! donc quand tu appuie sur + -> nbre=Float.parseFloat("4" )
ensuite res= addition (res=30, nbre=4) -> res= 34 ensuite tu ajoute 1!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Ma caltoche ne marche pas !

 

Sujets relatifs
Menu JS qui ne marche pas avec IECSS: pourquoi ça marche pas ?
swf en boucle | loop="false" ne marche pas[XSLT]Récursivité
soucis pour remettre en marche site web[RESOLU] Lancer pop up depuis flash (compatible IE)
le ValidationSummary ASP ne marche pas sous Firefoxpop-up qui marche pas ?
problème de formulaire sous firefox alors qu'il marche sur IE et Opéraappel recursif qui ne marche pas
Plus de sujets relatifs à : Ma caltoche ne marche pas !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR