Java

Résolu
Star -  
 danimo -
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. titus22 Messages postés 2352 Statut Membre 668
     
    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
    1. Star
       
      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 !!
      0
    2. titus22 Messages postés 2352 Statut Membre 668
       
      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);
      }
      }
      0
    3. Star
       
      mérci =)
      0
  2. Joe
     
    Parce que méthode1 travaille sur une copie locale de x.
    0
  3. danimo
     
    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
    0