Debutant addition et variable

Signaler
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004
-
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
-
BOn j'ai deja pose ma question sur un des autres forums mais je vias essayer de faire plus simple.

Donc voila:

je souhaite creer une fonction addition qui me permette d'additionner une nouvelle variable avec une ancienne (dans laquelle je garde en memoire le resultat obtenu lors des additions precedente) comment faire?

j'ai fait un truc du style:
private double result = 0;//contient la valeur du calcul en cours

private void resultat(char val)
{
double resulta = Double.parseDouble(chiffre);
resultb =resulta +resultb; // resultb = resulta c normal
result=resulta+result; // result = 2*result + resulta ??? pourquoi???
}

resultb = 0;

15 réponses

Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

merci a celui qui pourra m'aider... :)
%-6
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Hello,
resultb elle sort d'ou??? tu la déclare comment???
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
et chiffre???
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
-> Twingo, le monsieur a précisé qu'il était débutant, alors c pas la peine de faire ton caïd.

-> nonoz, j'ai pas tout compris sur la partie de code que tu as mis, mais si tu veux donnes toute la classe et là on pourra un peu mieux piger. En attendant je te propose un truc qui pourra t'être utile (c une classe exemple qu'on m'a filé pour apprendre java)

import java.util.Vector;
import java.lang.Double;

public class TestVector
{
public static void main (String argmts[])
{
double somme=0;
double nombreCourant;
// double est type numérique

Double nombre1=new Double(1);
Double nombre2=new Double(457);
Double nombre3=new Double(45);
Double nombre4=new Double(78);
// Double est un objet pourvu de méthodes

Vector pile=new Vector();
// Vector est un objet qui simule un tableau à taille variable

pile.add(nombre1);
pile.add(nombre2);
pile.add(nombre3);
pile.add(nombre4);
// la méthode add() de vector ajoute un objet à la fin du vecteur

for(int j=0;j<pile.size();j++)
{
nombreCourant=((Double)pile.get(j)).doubleValue();
somme+=nombreCourant;
// cette instruction est identique à somme=somme+nombreCourant, mais plus fun
System.out.println("Nombre ajouté: "+nombreCourant);
System.out.println("Somme actuelle: "+somme);
}
}
}

Oobaï TaPou !
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
ben ?!? d'ou c quelle est passée l'indentation ?

Oobaï TaPou !
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

salut,
ci dessous ma classe principale. la fonction calcul est appele lorsque l'on clique sur un bouton d'une autre classe.

bon alors je n'ai plus le probleme d'adition grace a la reinitialisation de chiffre lors de l'addition

maintenant par contre j'obtiens l'erreur suivante lorsque j'appuie sur + et je sais pas pourquoi... :(
(c pas fini c pour ca qu'il n'y a que le +qui fonctionne...

java.lang.NumberFormatException: empty String

at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:986)

at java.lang.Double.parseDouble(Double.java:202)

at calc.Applet1.faitlecalcul(Applet1.java:83)

at calc.Applet1.calcul(Applet1.java:103)

at calc.boutons.actionPerformed(boutons.java:174)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)

at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)

at java.awt.Component.processMouseEvent(Component.java:5134)

at java.awt.Component.processEvent(Component.java:4931)

at java.awt.Container.processEvent(Container.java:1566)

at java.awt.Component.dispatchEventImpl(Component.java:3639)

at java.awt.Container.dispatchEventImpl(Container.java:1623)

at java.awt.Component.dispatchEvent(Component.java:3480)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)

at java.awt.Container.dispatchEventImpl(Container.java:1609)

at java.awt.Component.dispatchEvent(Component.java:3480)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)


----------------------------------------------------
%-6
----------------------------------------------------
package calc;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class Applet1 extends Applet {

  boolean isStandalone = false;
  JPanel fondcalc = new JPanel();
  GridBagLayout gridBagLayout1 = new GridBagLayout();
  JLabel jLabel1 = new JLabel("Bonjour !");
  String chiffre = "0";
  boolean bool = false;
  private double result = 0;//contient la valeur du calcul en cours
  char operateur = 'p';//contient la valeur de l'operateur

  /**Obtenir une valeur de paramètre*/
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  /**Construire l'applet*/
  public Applet1() {
  }
  /**Initialiser l'applet*/
  public void init() {

    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  /**Initialiser le composant*/
  private void jbInit() throws Exception {
    fondcalc.setLayout(gridBagLayout1);

    boutons mazoneboutons=new boutons(this);

    jLabel1.setBackground(Color.white);
    jLabel1.setOpaque(true);
    jLabel1.setPreferredSize(new Dimension(72, 15));
    jLabel1.setVerifyInputWhenFocusTarget(true);
    jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);
    jLabel1.setHorizontalTextPosition(SwingConstants.RIGHT);
    jLabel1.setVerticalTextPosition(SwingConstants.CENTER);

    fondcalc.setBackground(SystemColor.control);
    fondcalc.setPreferredSize(new Dimension(300, 300));
    fondcalc.add(jLabel1,           new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0
            ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 123, 0));
  fondcalc.add(mazoneboutons,       new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
    this.add(fondcalc, null);

  }
  /**Obtenir les informations d'applet*/
  public String getAppletInfo() {
    return "Information applet";
  }
  /**Obtenir les informations de paramètre*/
  public String[][] getParameterInfo() {
    return null;
  }

  /** Affichage du résultat */
  double resulta =0.0;
  double estegale = 0.0;
  void faitlecalcul(){
    resulta = Double.parseDouble(chiffre);
    estegale += resulta;
    jLabel1.setText(" egale "+estegale+operateur+resulta);
    resulta = 0.0;
    chiffre = "";
    bool = false;
  }

void calcul(char val)
  {
  //jLabel1.setText(" "+result+" i "+i+" val"+val);
    switch (val) {
      case 'O':
        result = 0;
        chiffre = "";
        jLabel1.setText(""+result);
        break;
      case '+':
        //double resulta = Double.parseDouble(chiffre);
        //result = resulta;
        faitlecalcul();
       // jLabel1.setText(" "+result);
        bool = false;
        operateur = '+';
        break;
      case '-':
        faitlecalcul();
        operateur = '-';
        break;
      case '*':
        operateur = '*';
        break;
      case '/':
    /*  nb2=3;
      faireCalcul();*/
        operateur = '/';
        break;
      case '=':
        faitlecalcul();
        break;
      default:
       // if(bool == true){
          chiffre =chiffre+val;
       /* }else{
          chiffre = ""+val;
          bool = true;
        }*/
      //  jLabel1.setText(""+chiffre+"result"+result);
        //   jLabel1.setText(" result "+result+" b "+resultb);
        break;
    }

   // resultb = 0;
  }
//----------------------------------------------------------------------------------------
}



merci d'avance...
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

j'aurais une question subsidiere... pourquoi si je ne reinitialise pas chiffre dans faitlecalcul() mon prog plante?
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
Grrr!

Il faudrait que tu sépares la classe de calcul de ta GUI pour qu'on y voit plus clair, sinon je pige pas dans ton switch tu appelle la méthode faitlecalcul() avant de changer la var operateur. pour chiffre ... ben en fait à quoi il te sert ce String, je vois pas trop...

Oobaï TaPou !
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

Bonjour,
Bon j'ai reussi a lsolutionner mon probleme. Par contre une question java n'est pas un langage lineaire? j'entend par la qu'il ne passe pas a la ligne suivant apres avoir excuter la ligne precedente?
car j'ai toujours des problemes sur des variables.
Exempel:
par defaut boolcalc = false
lorsque j'appuie pour la premier fois sur '*'
normalement
boolcalc = false donc il n'appelle pas la methode faitlecalcul() par contre il appelle enregistre pour que lors du deuxieme passage il lance fait le calcul.
or des le premier passage il lance faitlecalcul en considerant que boolcalc = true, pourquoi?

j'espere que mon code est plus clair la.; j'ai essaye de le simplifier pour laisser que les choses qui me pose probleme:

package calc;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

public class Applet1 extends Applet {

  boolean isStandalone = false;
  GridBagLayout gridBagLayout1 = new GridBagLayout();
  JLabel jLabel1 = new JLabel("Bonjour !");
  String chiffre = "0";
  boolean bool = false;
  boolean boolcalc = false;//pour savoir si on doit faire le calcul
  char operateur = 'p';//contient la valeur de l'operateur

  /** pour reinitialise ma varible chiffre... */
  void initia(){
    chiffre = "0";
  }

  /** Fait le calcul */
  double resulta =0.0;
  double estegale = 0.0;
  void faitlecalcul(){
    resulta = Double.parseDouble(chiffre);
    switch (operateur) {
      case '*':
        estegale = estegale*resulta;
        break;
      default:
        estegale += resulta;
        break;
    }
    jLabel1.setText(""+estegale+" * "+boolcalc);
    resulta = 0.0;
    initia();
    bool = false;
  }

  void enregistre(){
        estegale = Double.parseDouble(chiffre);
        boolcalc=true;
  }

/** en fonction du bouton appuye on fait differentes choses */
void calcul(char val)
  {
    switch (val) {
      case '*':
        if(boolcalc==true){
          faitlecalcul();
        }else{
          enregistre();
        }
        operateur = '*';
        break;

      default:
        if(bool == true){
          chiffre =chiffre+val;
        }else{
          chiffre = ""+val;
          bool = true;
        }
        jLabel1.setText(""+chiffre+"est egale"+estegale+boolcalc);
        break;
    }

  }
//----------------------------------------------------------------------------------------
}

snif java me desespere... :( :sad)
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
?

ça fait cb de temps que tu es sur java ?

Oobaï TaPou !
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

Pourquoi mon code est a chie? :(
ben ca fait moins d'un mois. Mais faut faire un projet et on n'a pas de cours donc j'essaye de m'aider de bouquins mais bon...
tu peux me donenr un coup de main pour que ma boucle if fonctionne?:

if(boolcalc==true){
faitlecalcul();
}else{
enregistre();
}

????
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
t sur le site là ? tu veux pas te connecter sur le tchat ?

Oobaï TaPou !
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

euh oui
Messages postés
57
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
23 juin 2004

tu as msn sinon?
Messages postés
79
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
17 novembre 2004
1
nan suis sur une bécane du taf, je suis même pas l'admin de ma machine (snif)
Oobaï TaPou !