Mise a jour d'un texte ou variable

Résolu
JeryVG Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
JeryVG Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours,
j'ai un problème au niveau d'une mise a jour d'une méthode.

Voici un exemple:

public class math
{
    
    public static void main(String[] args)
    {
        for(int i = 0 ; i<5 ;i++){
            somme(a());
        }
    }
    
    public static int a(){
        int compteurA=0;
        
        compteurA=compteurA+1;
        
        return compteurA;
    }
    
    public static void somme(int compteurA){
        int B;
        int somme;
        B=5;
        somme=0;
        
        somme=B+compteurA;
        System.out.println("somme = "+ somme);
    }
    
    
}


Parce qu’a la fin je n'ai que des somme=6.
Je voudrais savoir comment régler ce problème sans passer par des variable globale ou des return.

Merci pour l'aide
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

À chaque fois tu réinitialises compteurA à 0 dans a() et tu réinitialise à 0 ta somme dans b(), donc a() renvoie toujours 1 et somme renvoie toujours 6, c'est normal...

Dans tous les cas si tu veux faire une somme il te faut deux valeurs : a et b pour calculer a + b, pour l'instant tu n'as que a (et b vaut toujours 5) donc ça ne peut pas s'accumuler.

Et si tu veux modifier un paramètre (ce qui est en général une mauvaise idée) il faut que ce soit un objet.

Exemple :

class Nombre {
    int valeur;
}

public class Math {

    public static void main(String[] args) {
        Nombre result = new Nombre();
        for (int i = 0; i < 5; i++) {
            somme(result, 1); // result += 1
            System.out.println("somme = " + result.valeur);
        }
    }

    public static void somme(Nombre resultB, int valeurA) {
        resultB.valeur += valeurA;
    }
}
1
JeryVG Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup
0