Mise a jour d'un texte ou variable

Résolu/Fermé
JeryVG Messages postés 6 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 16 février 2019 - Modifié le 21 mars 2018 à 08:34
JeryVG Messages postés 6 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 16 février 2019 - 21 mars 2018 à 18:52
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 mars 2018 à 08:53
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 mercredi 21 mars 2018 Statut Membre Dernière intervention 16 février 2019
21 mars 2018 à 18:52
merci beaucoup
0