Partage
  • Partager sur Facebook
  • Partager sur Twitter

Integer problème en java

Anonyme
    7 août 2006 à 11:51:05

    Bonjour j'ai le morceau de code suivant et j'ai une erreur a la ligne Integer.getInteger(valeur).intValue()


    public class calcul {

            public calcul() {
                    resultat = 0;
                    operateur = ' ';
            }
           
            public String calculer(String op, String valeur ) {
                   
                    if( operateur == ' ')
                            resultat =  Integer.getInteger(valeur).intValue();
                    else if( operateur == '+' )
                            resultat = resultat + Integer.getInteger(valeur).intValue();
                    else if( operateur == '-' )
                            resultat = resultat - Integer.getInteger(valeur).intValue();
                    else if( operateur == '*' )
                            resultat = resultat * Integer.getInteger(valeur).intValue();
                    else if( operateur == '/' )
                            resultat = resultat / Integer.getInteger(valeur).intValue();
                   
                    if( op.equals("=") )
                            return Long.toString(resultat);
                   
                    operateur = op.toCharArray()[0] ;
                   
                    return "" ;
            }
           
            public int resultat;
            public char operateur;

    }



    Pouvez vous m'aider ?
    • Partager sur Facebook
    • Partager sur Twitter
      7 août 2006 à 12:07:45

      remplace


      Integer.getInteger(valeur).intValue();


      par


      (new Integer(valeur)).intValue();
      • Partager sur Facebook
      • Partager sur Twitter
        7 août 2006 à 12:16:23

        première correction



        public class calcul {

                public calcul() {
                        resultat = 0;
                        operateur = ' ';
                }
               
                public String calculer(String op, String valeur ) {
                       
                        if( operateur == ' ')
                                resultat =  Integer.parseInt(valeur);
                        else if( operateur == '+' )
                                resultat = resultat + Integer.parseInt(valeur);
                        else if( operateur == '-' )
                                resultat = resultat - Integer.parseInt(valeur);
                        else if( operateur == '*' )
                                resultat = resultat * Integer.parseInt(valeur);
                        else if( operateur == '/' )
                                resultat = resultat / Integer.parseInt(valeur);
                        if( op.equals("=") )
                                return Long.toString(resultat);
                       
                        operateur = op.toCharArray()[0] ;
                       
                        return "" ;
                }
               
                public int resultat;
                public char operateur;
               
                public static void main(String[] args) {
                                calcul c = new calcul();
                                c.calculer("+", "4");
                                c.calculer("*", "4");
                                System.out.print(c.resultat);
                               
                        }

        }

        il faut utiliser Interger.parseInt(String)
        le problème c'est que resultat vaut 8 et non 16 comme prévu à la fin

        la problème est que tu traite l'opérateur à la fin de la méthode et pas avant
        seconde correction

        (ou alors ta calculette à une logique très bizzare)



        public class calcul {

                public calcul() {
                        resultat = 0;
                        operateur = ' ';
                }
               
                public String calculer(String op, String valeur ) {
                                operateur = op.toCharArray()[0] ;
                               
                               
                        if( operateur == ' ')
                                resultat =  Integer.parseInt(valeur);
                        else if( operateur == '+' )
                                resultat = resultat + Integer.parseInt(valeur);
                        else if( operateur == '-' )
                                resultat = resultat - Integer.parseInt(valeur);
                        else if( operateur == '*' )
                                resultat = resultat * Integer.parseInt(valeur);
                        else if( operateur == '/' )
                                resultat = resultat / Integer.parseInt(valeur);
                        if( operateur == '=' )
                                return Long.toString(resultat);
                       
                       
                       
                        return "" ;
                }
               
                public int resultat;
                public char operateur;
               
                public static void main(String[] args) {
                                calcul c = new calcul();
                                c.calculer("+", "4");
                                c.calculer("*", "4");
                                System.out.print(c.resultat);
                               
                        }

        }

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          7 août 2006 à 12:49:51

          c'est bon j'ai fait des rectification et elle marche très bien, le seul problème que je doit traiter maintenant : La gestion des parenthèses
          • Partager sur Facebook
          • Partager sur Twitter
            7 août 2006 à 13:20:45

            Un petit conseil : passer par un arbre binaire rendra le problème des parenthèses (et des priorités en général) très simple.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              8 août 2006 à 0:33:40

              Qu'est que tu entend par un arbre binaire ?
              • Partager sur Facebook
              • Partager sur Twitter
                8 août 2006 à 1:38:12

                Documentes toi bien ^^Wikipedia. Un radix tree ou arbre binaire est très souvent employé en algo... Je dirais presque que c'est incontournable.
                • Partager sur Facebook
                • Partager sur Twitter
                  8 août 2006 à 9:15:19

                  L'idée est d'avoir un arbre binaire où un noeud qui n'est pas une feuille contient un opérateur mathématique et les deux fils du noeud représente soit une valeur mathématique (si ce sont des feuilles), soit une expression au même titre que leur père.

                  L'arbre représente alors l'entièreté de l'expression de départ. Pour l'évaluer, il suffit d'évaluer les branche de gauche et de droite et d'effectuer l'opérateur qui se trouve dans le noeud sur les résultats de ces évaluations.

                  Les règles de priorités apparaissent sous la forme d'une arborescence spécifique.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Integer problème en java

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown