IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Surcharge de métode


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Mai 2005
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Surcharge de métode
    Bonjour,

    Je suis en train de me former sur Java et j'ai un problème que je ne comprends pas
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    // Dans Test.java
    public class Test
    {
      public static void main(String[] _args)
      {
        Statistic oStat = new Statistic();
        int x = oStat.average(10,20);
        System.out.println(x);
     
      }
    }
     
    // Dans Statistic.java
    public class Statistic
    {
      public int average(int... liste)
      {
      int sum=0;
     
      for (int x:liste)
      {
        sum += x;
      }
      return (int) ( sum / liste.length);
      }
     
      public float average(float... liste)
      {
      float sum=0;
     
      for (float x:liste)
      {
        sum += x;
      }
      return sum / liste.length;
      }
    }
    Le problème que je rencontre est que dans le programme principal sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int x = oStat.average(10,20);
    Le compilateur indique cette erreur:
    reference to average is ambiguous, both method average(int...) in Statistic and method average(float...) in Statistic match

    Pourriez-vous m'aider?
    Merci
    Henri

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le compilateur ne sais pas si il dois appeler average(int....) ou average(float...), car les deux sont possibile avec ton code, et comme tu passe des valeur immédiates (pas des variable), il ne sais pas se baser sur le type des variable pour résoudre son ambiguité. Plusieurs solutions (en supposant que tu veux appeler int....:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a = 10;
    int b = 20;
    int x = oStat.average(a,b);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int x = oStat.average((int)10,(int)20);

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Mai 2005
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Surcharge de métode
    Bonjour,

    Merci pour la réponse si rapide, malheureusement la solution proposée ne fonctionne pas non plus, le compilateur retourne la même erreur
    Je suis en train de développer sous NetBeans, peut-être devrais-je regarder du côté des options de compilation.

    Henri

    Citation Envoyé par tchize_ Voir le message
    le compilateur ne sais pas si il dois appeler average(int....) ou average(float...), car les deux sont possibile avec ton code, et comme tu passe des valeur immédiates (pas des variable), il ne sais pas se baser sur le type des variable pour résoudre son ambiguité. Plusieurs solutions (en supposant que tu veux appeler int....:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a = 10;
    int b = 20;
    int x = oStat.average(a,b);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int x = oStat.average((int)10,(int)20);

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Seule solution que je vois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int x =  oStat.average(new int[]{10,20});
    C'est toujours un problème la surcharge avec vararg + types compatibles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/12/2003, 10h23
  2. Surcharge de fonction d'un edit dynamique
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/10/2003, 11h56
  3. Réponses: 5
    Dernier message: 24/04/2003, 11h47
  4. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  5. Réponses: 8
    Dernier message: 20/11/2002, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo