Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'une méthode

    17 février 2020 à 20:58:34

    Bonjour, j'ai essayé de créer une méthode toute simple qui ne fait qu'additionner deux nombres, mais elle ne marche pas.

    package com.company;
    
    public class Main {
        public static void main(String[] args) {
    
            int A = 3, B = 5;
            int reponse1;
            int reponse2 = reponse1.resultat();
        }
    
        public static int resultat(int A, int B)
        {
            return (int) (A+B);
        }
    }

    L'erreur est la suivante:

    Error:(8, 32) java: int cannot be dereferenced

    Si quelqu'un pouvait m'expliquer le problème s'il vous plaît...

    Merci et bonne soirée


    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2020 à 21:14:27

      La méthode est statique, et  prend deux paramètres.

      -
      Edité par michelbillaud 17 février 2020 à 21:15:24

      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2020 à 21:26:16

        Merci pour ta réponse.

        J'ai corrigé la ligne 8 en lui mettant les paramètres:

        int reponse2 = reponse1.resultat(A,B);


        Par contre je vois pas quel changement faire pour static.

        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2020 à 21:49:15

          Pourquoi as-tu mis static, ô toi le créateur de la méthode ?

          -
          Edité par michelbillaud 17 février 2020 à 21:50:53

          • Partager sur Facebook
          • Partager sur Twitter
            17 février 2020 à 22:21:11

            Et aussi, pourquoi tu appels ta méthode sur un int ?

            Tu es dans la même classe.

            package com.company;
             
            public class Main {
                public static void main(String[] args) {
             
                    int A = 3, B = 5;
                    int reponse1;
                    int reponse2 = resultat(A, B);
                }
             
                public static int resultat(int A, int B)
                {
                    return (int) (A+B);
                }
            }

            Devrait suffire.

            • Partager sur Facebook
            • Partager sur Twitter

            Site personnel : Julien Gidel - AutoMatePHPresentation

              17 février 2020 à 23:32:20

              michelbillaud a écrit:

              Pourquoi as-tu mis static, ô toi le créateur de la méthode ?

              -
              Edité par michelbillaud il y a environ 1 heure


              pour que la méthode soit utilisable partout dans la classe?

              jule04 a écrit:

              Et aussi, pourquoi tu appels ta méthode sur un int ?

              Tu es dans la même classe.

              package com.company;
               
              public class Main {
                  public static void main(String[] args) {
               
                      int A = 3, B = 5;
                      int reponse1;
                      int reponse2 = resultat(A, B);
                  }
               
                  public static int resultat(int A, int B)
                  {
                      return (int) (A+B);
                  }
              }

              ça marche! Merci :D

              -
              Edité par Madouh 17 février 2020 à 23:32:43

              • Partager sur Facebook
              • Partager sur Twitter
                17 février 2020 à 23:57:52

                Bonsoir,

                Effectivement, par contre le static tu n'as pas la bonne justification. Tu peux la mettre en private int résultat, et tu auras accès à ta méthode A L'INTERIEUR de ta classe. Mais pas à l'extérieur. Le contexte static est assez spécial et peu utilisé (enfin, ça dépend vraiment des cas).

                Renseigne toi un peu plus sur ce mot clé static, il est important de savoir à quoi il correspond.

                • Partager sur Facebook
                • Partager sur Twitter

                Site personnel : Julien Gidel - AutoMatePHPresentation

                  18 février 2020 à 7:49:21

                  Toutes les méthodes de calcul mathématique sont statiques, par exemple.

                  Mais bon, le problème fondamental, c'est d'essayer de programmer en écrivant n'importe quoi et en modifiant au pif. La probabilité d'y arriver est très faible, et ça va être générateur de frustrations.

                  On peut aussi interroger l'utilité du transtypage (int) devant A+B. Et de la variable reponse1 inutilisée.

                  Pour en revenir au problème initial, quand on appelle x.f(), il faut que x soit une variable d'un type pour lequel il existe une méthode f. Elle contiendra une référence vers un objet, cette reference sera dereferencée pour accéder à la méthode f.

                  Si x est un int (type primitif), on ne peut pas le dereferencer, parce que ce n'est pas une référence. D'où le message.

                  -
                  Edité par michelbillaud 18 février 2020 à 7:59:48

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 février 2020 à 13:58:39

                    Je vois, merci beaucoup pour vos explications! ;)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Création d'une méthode

                    × 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