Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire une opération en fonction d'une entrée

Sujet résolu
    24 mai 2015 à 15:13:59

    Bonjour à tous :)

    Je voudrais faire en sorte que si l'utilisateur entre 3 * 5 il fasse cette même opération et qu'il lui retourne la réponse

    J'ai donc créé une méthode operation[] qui parcours un tableau contenant tout les opérateurs disponible et une fois qu'il a trouvé de quel opérateur il s'agit il va faire l'opération requise

    Voici mon code:

    public double operation(double nb1, double nb2, char operateur){
            for(int i; i < operations.length; i++){
                if(operateur == i){
                    reponse = nb1 operations[i] nb2;
                    break;
                }else{
                    affichage += "Cette opération n'est pas encore disponible";
                }
            }
        }

    Comme vous l'aurez constaté la ligne 

                    reponse = nb1 operations[i] nb2;

    Ne veut rien dire

    comment faire en sorte que operateur[i] soit considéré comme opérateur sans pour autant faire un test par case du tableau?

    Merci d'avance :D

    snow ^^

    • Partager sur Facebook
    • Partager sur Twitter
    N'aies pas peur d'être curieux, qui n'essaie rien n'a rien :)
      24 mai 2015 à 17:43:12

      Bonjour !

      Alors déjà y a un truc qui me paraît bizarre : tu compares ton opérateur qui est de type char avec i qui est un entier qui parcourt ton tableau.

      Met plutôt :

      if(operateur == operations[i])


      Ensuite je crois qu'il faudra que tu fasses au cas par cas car tu ne peux pas faire un calcul avec un char comme opérateur. Il faut absolument que tu passes par un opérateur "classique" si je peux dire.

      En espérant que ça puisse t'aider ! 

      -
      Edité par Zoctos 24 mai 2015 à 17:47:16

      • Partager sur Facebook
      • Partager sur Twitter
      Auteur, Vidéaste et Développeur (Web, Logiciel et Jeux Vidéos)
        24 mai 2015 à 19:24:03

        Oui effectivement je me suis planté dans mon test ^^

        Merci :D

        D'accord... Au moins j'aurai essayé, si qqun aurait une solution à me proposer je suis toujours preneur!

        • Partager sur Facebook
        • Partager sur Twitter
        N'aies pas peur d'être curieux, qui n'essaie rien n'a rien :)
          24 mai 2015 à 21:26:11

          Salut,

          Pour ton soucis je vois bien un code de ce genre :

          public double operation(double nb1, double nb2, char operateur){
                  for(int i; i < operations.length; i++){
          			//initialisation variable à chaque tour de boucle
          			char operande = null;
          			int reponse = 0;
          			//Récupérer opérande : +,-,*,/
          			operande = getChar (operations[],i);//Voir documentation java
                                  if(operande == '+'){
                                     reponse = nb1 + nb2;  
                                  }else if (operande == '-'){
          				reponse = nb1 - nb2;
          			}else if (operande == '*'){
          				reponse = nb1 * nb2;
          			}else if (operande == '/'){
          				reponse = nb1 / nb2;
          			}
          			else{
                          affichage += "Cette opération n'est pas encore disponible";
                      }
                  }
          }

          En espérant avoir contribué au débat

          • Partager sur Facebook
          • Partager sur Twitter
          L'informaticien intelligent évite le codage inutile !! Pensez aux autres : utilisez le bouton Sujet Résolu et les +1
            25 mai 2015 à 10:51:17

            D'accord!

            Merci encore :D

            • Partager sur Facebook
            • Partager sur Twitter
            N'aies pas peur d'être curieux, qui n'essaie rien n'a rien :)
              25 mai 2015 à 20:02:54

              Quand tu seras expérimenté, tu pourras étudier cela :

              enum Operator {
                  ADD('+', (x, y) -> x + y),
                  DIV('/', (x, y) -> x / y),
                  MUL('*', (x, y) -> x * y),
                  SUB('-', (x, y) -> x - y);
              
                  public static Operator fromSign(char sign) {
                      for (Operator operator : values())
                          if (operator.sign == sign)
                              return operator;
                      throw new UnsupportedOperationException("Operator not found: " + sign);
                  }
              
                  private final BiFunction fct;
                  private final char sign;
              
                  private Operator(char sign, BiFunction fct) {
                      this.sign = sign;
                      this.fct = fct;
                  }
              
                  public BiFunction getFct() {
                      return fct;
                  }
              
                  public char getSign() {
                      return sign;
                  }
              }

              Utilisation :

              double v1 = 5;
              double v2 = 3;
              char op = '+';
              
              Operator operator = Operator.fromSign(op);
              double res = operator.getFct().apply(v1, v2);
              
              System.out.println(res);
              • Partager sur Facebook
              • Partager sur Twitter
              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)

              Faire une opération en fonction d'une entrée

              × 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