Ma caltoche ne marche pas !

Ma caltoche ne marche pas ! - Java - Programmation

Marsh Posté le 01-12-2007 à 13:34:35    

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
Reply

Marsh Posté le 01-12-2007 à 13:34:35   

Reply

Marsh Posté le 01-12-2007 à 16:43:45    

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}
Reply

Marsh Posté le 01-12-2007 à 16:47:54    

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
Reply

Marsh Posté le 01-12-2007 à 18:30:02    

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}
Reply

Marsh Posté le 01-12-2007 à 18:33:07    

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
Reply

Marsh Posté le 02-12-2007 à 13:23:15    

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
Reply

Marsh Posté le 02-12-2007 à 13:52:33    

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
Reply

Marsh Posté le 02-12-2007 à 14:24:17    

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
Reply

Marsh Posté le 02-12-2007 à 14:39:14    

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!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed