Bonjour à tous;

Je cherche à comprendre le mecanisme de fonctionnement de ces 2 programmes java, entre les fonctions et leurs appels,
Voici le premier programme affiche H;H;H, je cherche une explication pourquoi il n'affiche pas HELLO

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
public class HelloWorld{
    public static void main(String[] args){
String maString ="H";
afficheMaString (maString);
changeMaString (maString);
afficheMaString (maString);
String uneString = 
ajouteEOuL(changeMaString(changeMaString(maString)));
afficheMaString (uneString);
}
public static void afficheMaString(String maString){
System.out.print(maString + ";");
}
public static String changeMaString(String  maString){
        String uneString = ajouteEOuL (maString) + "0" ;
       return maString;
}
 public static String ajouteEOuL(String maString){
        if(maString.length() == 1){
            maString += "E";
        }else if(maString.length() == 2){
            maString += "L";
       }else{
            maString = "HELLO";
        }
        return maString;
   }
}
Le deuxième affiche des i=0, i=0 et i=0, je pensais qu'il doit afficher i=0, i=20 et i=30 j'aimerais avoir des explications sur le fonctionnement du programme.

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
39
public static void 
monSousProgramme(){
int i = 0;
afficheI(i);
changeI(i);
afficheI(i);
i = changeEtRetourne
(
changeEtRetourne(changeEtRetourne(i))
);
afficheI(i);
}
public static void afficheI(int i){
System.out.print(" i = " + i + " ;");
}
pu
blic static int changeEtRetourne
(int i){
int y = ajouteDixOuVingt(i) + 20
;
return i;
}
public static void changeI(int i){
i = 
ajouteDixO
uVingt(i) + 20
;
}
public 
static 
int ajouteDixOuVingt(int i){
if(i  == 10){
i = i + 20;  
}else{
i = i + 10;
}
return i;
}
}