Debutant addition et variable

nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004 - 16 juin 2004 à 16:28
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 - 18 juin 2004 à 11:49
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

nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
16 juin 2004 à 16:29
merci a celui qui pourra m'aider... :)
%-6
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
16 juin 2004 à 20:48
Hello,
resultb elle sort d'ou??? tu la déclare comment???
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
16 juin 2004 à 20:49
et chiffre???
0
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
17 juin 2004 à 11:02
-> 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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
17 juin 2004 à 11:07
ben ?!? d'ou c quelle est passée l'indentation ?

Oobaï TaPou !
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
17 juin 2004 à 22:51
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...
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
17 juin 2004 à 23:08
j'aurais une question subsidiere... pourquoi si je ne reinitialise pas chiffre dans faitlecalcul() mon prog plante?
0
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
18 juin 2004 à 10:57
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 !
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
18 juin 2004 à 11:23
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)
0
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
18 juin 2004 à 11:34
?

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

Oobaï TaPou !
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
18 juin 2004 à 11:38
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();
}

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

Oobaï TaPou !
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
18 juin 2004 à 11:45
euh oui
0
nonoz Messages postés 57 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 23 juin 2004
18 juin 2004 à 11:45
tu as msn sinon?
0
Asrull Messages postés 79 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 17 novembre 2004 1
18 juin 2004 à 11:49
nan suis sur une bécane du taf, je suis même pas l'admin de ma machine (snif)
Oobaï TaPou !
0