Mon méthode fonctionne pas

Résolu/Fermé
domxaline - Modifié par domxaline le 17/01/2016 à 19:08
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 janv. 2016 à 18:09
Bonjour,
comme j'ai dit la haut, mon méthode donne pas le résultat correct, veuillez m'aidez svp

public class Test8
{
public static void main(String[] args)
{
int tab[]={2,5,3,10};

int somme=0;
Test(tab,somme);
//System.out.println("Dans le tab [ "+(i)+" ] valeur est: "+somme);
System.out.println(somme);
}
public static int Test(int []tab,int somme)
{
somme=0;
for (int i=0; i<tab.length; i++)
{
somme=somme+ tab[i];
//System.out.println("Dans le tab [ "+(i)+" ] valeur est: "+somme);
}
return somme;
}
}



2 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
Modifié par tarek_dotzero le 17/01/2016 à 23:55
Bonjour,

Vous avez trois inconvénients dans votre code :
1. La variable somme est passé par valeur non pas par référence (comme c'est le cas avec les objets en java),
2. Somme peut ne pas être envoyée à la méthode,
3. La valeur retournée par la méthode n'est pas retenue.

Un petit correctif :

// J'ai pas testé :
public class Test8 
{
 public static void main(String[] args) 
 {
  int tab[]={2,5,3,10};
  
      int somme=0;
     // Je récupère la valeur retournée par la méthode ici :
     somme = Test(tab);
     //System.out.println("Dans le tab [ "+(i)+" ] valeur est: "+somme);
     System.out.println(somme);
}
   public static int  Test(int []tab)
   {
      // Ceci est une nouvelle variable, complètement différente de somme déclarée dans main
      int somme=0;
       for (int i=0; i<tab.length; i++)
       {
             somme=somme+ tab[i];
             //System.out.println("Dans le tab [ "+(i)+" ] valeur est: "+somme);  
       }
       return somme;
   } 
 }



0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
18 janv. 2016 à 18:09
Remarque : on peut simplifier :-)
public class Test8 {
    public static void main(String[] args) {
        System.out.println(test(2,5,3,10));
    }

    public static int test(int...tab) {
        int sum = 0;
        for (int n : tab)
            sum += n;
        return sum;
    } 
 }
0
merci beaucoup,compris
0