Void en java

Void en java - Java - Programmation

Marsh Posté le 02-09-2014 à 14:54:47    

Bonjour,  
 
 
 
Je pose peut etre une question debile mais je suis pas sur de comprendre pourquoi mon code ci dessous ne marche pas.
 
 
 

Code :
  1. public void update(int a, int b) {
  2.  
  3.     a = a + b;
  4.   }
  5. public void main(){
  6. int a = 0;
  7. int b = 10;
  8. update(a, b);
  9. System.out.println("Result " + a);
  10. }


 
 
 
En fait je m attendais a ce que j aie a=10 mais a est toujours egale a zero.
 
Je pense que j ai rate quelaue chose !!!
 
 
Merci de votre aide.

Reply

Marsh Posté le 02-09-2014 à 14:54:47   

Reply

Marsh Posté le 02-09-2014 à 16:13:35    

C'est parce que a est passé par valeur à la méthode update (voir infos par là)
 
Ca veut dire que quand tu entres dans la méthode update, il y a 2 variables a : celle du main (on va l'appeler a1) et celle de l'update (on va l'appeler a2).
 
Quand tu fais a = a+b, ce qui se passe en réalité c'est que a2 va prendre la valeur 10 mais a1 reste à 0.
 
Si tu avais fait le println après l'addition, tu aurais bien obtenu le résultat attendu.
 
Je ne connais pas trop java, en C# tu aurais pu déclarer ta méthode update comme ça:
 

Code :
  1. public void update(ref int a, int b)


 
A priori en java ça n'est pas possible directement (je n'ai pas trop creusé en même temps)


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 02-09-2014 à 16:48:20    

suffit de retourner le résultat par la fonction et de l'appliquer à ta variable a

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed