Mon méthode fonctionne pas

Résolu
domxaline -  
KX Messages postés 19031 Statut Modérateur -
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

  1. tarek_dotzero Messages postés 834 Statut Membre 122
     
    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
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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