Pb typage étrange....

Pb typage étrange.... - Java - Programmation

Marsh Posté le 28-11-2007 à 23:05:08    

bonsoir à tous,
voilà, je débute en java et je developpe une caculatrice avec  interface gaphique (basique).
cependant pour les opérations (variables en float) je rencontre un problème de typage:
"operator + cannot be applied ..." alors que toutes mes variables sont en float:

Code :
  1. import java.awt.event.*;
  2. import java.awt.*;
  3. public class Graphcalc extends Frame implements ActionListener
  4. {
  5. TextField zone;
  6. Button bouton, bouton1, bouton2, bouton3, bouton4, bouton5, bouton6, bouton7, bouton8, bouton9, boutadd, boutsous, boutmult, boutdiv, boutegal;
  7. String nombre1="", nombre2="";
  8. Float res;
  9. public Graphcalc()
  10. {
  11.  super();
  12.  setLayout(new FlowLayout());
  13.  setTitle("Le Grec présente" );
  14.  zone= new TextField(10); add(zone);
  15.  Button bouton1 = new Button("1" ); add(bouton1); bouton1.addActionListener(this);
  16.  Button bouton2 = new Button("2" ); add(bouton2); bouton2.addActionListener(this);
  17.  Button bouton3 = new Button("3" ); add(bouton3); bouton3.addActionListener(this);
  18.  Button bouton4 = new Button("4" ); add(bouton4); bouton4.addActionListener(this);
  19.  Button bouton5 = new Button("5" ); add(bouton5); bouton5.addActionListener(this);
  20.  Button bouton6 = new Button("6" ); add(bouton6); bouton6.addActionListener(this);
  21.  Button bouton7 = new Button("7" ); add(bouton7); bouton7.addActionListener(this);
  22.  Button bouton8 = new Button("8" ); add(bouton8); bouton8.addActionListener(this);
  23.  Button bouton9 = new Button("9" ); add(bouton9); bouton9.addActionListener(this);
  24.  Button bouton = new Button("." );  add(bouton);  bouton.addActionListener(this);
  25.  Button boutadd = new Button("+" ); add(boutadd); boutadd.addActionListener(this);
  26.  Button boutsous = new Button("-" ); add(boutsous); boutsous.addActionListener(this);
  27.  Button boutmult = new Button("*" ); add(boutmult); boutmult.addActionListener(this);
  28.  Button boutdiv= new Button("/" );   add(boutdiv); boutdiv.addActionListener(this);
  29.  Button boutegal = new Button("=" ); add(boutegal); boutegal.addActionListener(this);
  30.  pack();
  31.  setVisible(true);
  32. }
  33. public static void main(String[] args)
  34. {
  35.  Graphcalc Fen;
  36.  Fen = new Graphcalc();
  37.  System.out.println(Fen);
  38. }
  39. public void actionPerformed(ActionEvent e)
  40. {
  41.  Button boutemp=(Button)e.getSource();
  42.  String nombre=boutemp.getLabel();
  43.  String operator,aff2;
  44.  Float res,nb1,nb2;
  45.  if((nombre.equals("+" )) || (nombre.equals("-" )) || (nombre.equals("*" )) || (nombre.equals("/" )) || (nombre.equals("=" )))
  46.  {
  47.   if(nombre1.equals("" )) zone.setText("tapez un nombre" );
  48.   else
  49.   {
  50.    if(nombre2.equals("" ))
  51.    {
  52.     if(nombre.equals("=" )) zone.setText(nombre);
  53.     else
  54.     {
  55.      nombre2=nombre1;
  56.      operator = nombre;
  57.     }
  58.    }
  59.    else
  60.    {
  61.     if(operator.equals("+" ))
  62.     {
  63.      //calculatrice Calc = new calculatrice();
  64.      nb1 = nb1.valueOf(nombre1);
  65.      nb2 = nb2.valueOf(nombre2);
  66.      res = (Float)nb1 + (Float)nb2;
  67.      zone.setText(res.toString());
  68.     }
  69.     else if(operator.equals("-" ))
  70.     {
  71.      //calculatrice Calc = new calculatrice();
  72.      nb1 = nb1.valueOf(nombre1);
  73.      nb2 = nb2.valueOf(nombre2);
  74.      res = (Float)nb1 - (Float)nb2;
  75.      zone.setText(res.toString());
  76.     }
  77.     else if(operator.equals("*" ))
  78.     {
  79.      //calculatrice Calc = new calculatrice();
  80.      nb1 = nb1.valueOf(nombre1);
  81.      nb2 = nb2.valueOf(nombre2);
  82.      res = (Float)nb1 * (Float)nb2;
  83.      zone.setText(res.toString());
  84.     }
  85.     else if(operator.equals("/" ))
  86.     {
  87.      //calculatrice Calc = new calculatrice();
  88.      nb1 = nb1.valueOf(nombre1);
  89.      nb2 = nb2.valueOf(nombre2);
  90.      res = (Float)nb1 / (Float)nb2;
  91.      zone.setText(res.toString());
  92.     }
  93.    }
  94.   }
  95.  }
  96.  else
  97.  {
  98.   String aff=nombre1 + nombre;
  99.   nombre1=aff;
  100.   zone.setText(aff);
  101.  }
  102. }
  103. }


 
Ce problème survient donc aux lignes 71, 79, 87,95
Merci de me répondre si vous avez la moindre idée.
bonne soirée à tous

Reply

Marsh Posté le 28-11-2007 à 23:05:08   

Reply

Marsh Posté le 28-11-2007 à 23:07:49    

Float et float, ce n'est pas la même chose :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 28-11-2007 à 23:09:44    

kadreg a écrit :

Float et float, ce n'est pas la même chose :o


 
ok, autant pour moi, je disais donc Float...
le fait est que toutes mes variables sont en Float et le pb de typage est tjr présent

Reply

Marsh Posté le 28-11-2007 à 23:18:19    

Mais pour Float (en fait java.lang.float), il y a pas d'opérateur + de défini, cet opérateur existe pour le type float :)
 
(accessoirement, ce n'est pas interdit d'initialiser nb1, nb2 et operator :o )


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 28-11-2007 à 23:23:34    

kadreg a écrit :

Mais pour Float (en fait java.lang.float), il y a pas d'opérateur + de défini, cet opérateur existe pour le type float :)
 
(accessoirement, ce n'est pas interdit d'initialiser nb1, nb2 et operator :o )


 
 
ok je comprend ce que tu veux dire, seulement je viens de changer donc mes types en float et utiliser un parseFloat au lieu
 de valueOf (pour renvoyer un float et non pas un Float), et maintenant je reçois comme erreur float cannot be dereferenced
?????

Reply

Marsh Posté le 28-11-2007 à 23:26:22    

c'est ta syntaxe qui es pas bonne :o Une méthode statique, comme valueOf et parse Float, doivent s'appeler sur la classe, et non sur une instance. Exemple :  
     nb1 = Float.parseFloat(nombre1);


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 28-11-2007 à 23:31:51    

kadreg a écrit :

c'est ta syntaxe qui es pas bonne :o Une méthode statique, comme valueOf et parse Float, doivent s'appeler sur la classe, et non sur une instance. Exemple :  
     nb1 = Float.parseFloat(nombre1);


 
ahhh, effectivement, ça m'apprendra à relire mes cours tiens...
cependant l'erreur est persistante
dsl d'etre chiant mais ça me prend vraiment la tête et ça me fatigue là.

Reply

Marsh Posté le 29-11-2007 à 06:19:43    

Grehunter a écrit :


erreur float cannot be dereferenced


 
Cela signifie que tu tentes d'utiliser une de tes variables comme si elle était un objet alors que float est un type de base.
 
Tu as du te tromper puisque tu utilises la méthode res.toString()
res est ici un float utilisé comme un Object (implicitement: un Float)
 
Poste le code problématique ou met à jour celui que tu as déja posté, parce qu'on ne peux pas aider sans avoir le probleme sous les yeux.


Message édité par bapho13 le 29-11-2007 à 06:22:33
Reply

Sujets relatifs:

Leave a Replay

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