Java

Résolu
Bonjour ,
j'arrive pas à comprendre un programme en Java :
classe A {
void methode1( int x) {
x+=12;
}
void methode2( )
int y=3;
methode1(y);
System.out.println(y="+y); // y=3
}
}

apparement il doit afficher 15 , mais ya un asstus qu' j'arrive pas a le trouver pour comprendre pourquoi affiche 3 ??

et mérci a tous !!

3 réponses

  1. Salut,

    C'est x qui prendra la valeur 15 et y reste = 3:

    public class Main
       {
          public static void main(String args[])
          {
             A obj = new A(); 
             obj.methode2(); 
          } 
       }
       
    	/*
    	   public class A
       { 
          public void methode1( int x) // x = 3
          { 
             x+=12;  // x de 3 passe à 15
             System.out.println("x = " + x); // x = 15
          }
          
          public void methode2( )
          { 
             int y = 3; 
             methode1(y); 
             System.out.println("y= "+y); // y = 3
          } 
       }
       */
    


    Cordialement,

    Dan
    1. La tu nous a donné une classe il faut voir le main pour comprendre :)

      A ce que je vois :
      méthode1 recoit X et lui ajoute 12

      méthode2
      appèle méthode 1 avec 3 en paramêtre et affiche y=3
      1. ouéé , mais l'exemple est écrit comme ça , supposons que dans le Main() on aura une simple déclaration , par exmple
        {
        A obj = new A();
        obj.methode2();
        }
        alors ca va affiché le 3 , alors comment ça ?

        et mérci beaucoup de m'avoir répondu !!
      2. Oui c'est normal. Voila ce qui ce passe dans methode2 :

        int y=3; // La tu déclare une variable y = 3
        methode1(y); // La tu appele la méthode 1 en lui donnant 3 en paramêtre.
        System.out.println("y="+y); // La tu affiche y = ainsi que la valeur de y qui est 3 car tu l'as pas changé

        donc tu aura à l'écran :
        y = 3

        Ton problème c'est que ta méthode 1 n'est pas bien écrite.

        void methode1( int x) {
        x+=12;
        }

        En gros elle recoit le nombre 3 que tu lui envois, elle lui ajoute 12 et c'est tout. x est une variable local à la fonction. x sera détruit à la fin de la fonction. Tu dois utiliser cette valeur comme valeur de retour. Comme ceci :

        int methode1( int x) {
        x+=12;
        return x;
        }

        et dans ta méthode 2 tu dois stocker cette valeur de retour pour pouvoir l'afficher en suite.
        void methode2( ){
        int y=3;
        y=methode1(y);
        System.out.println(y="+y); // y=3
        }

        Voila ;)

        La classe A réecrite est simplifié :

        classe A {
        int methode1( int x) {
        return x+12;
        }

        void methode2( )
        int y=methode1(3);
        System.out.println("y="+y);
        }
        }