Forum de discussion :
 Forum cours et tuto    [2]
 Forum programmation        [11]
 Forum multimédia        []
 Forum web        [9]
 Forum réseau        []
 Forum cryptographie        [3]
 Forum divers        [6]
 Forum script        []
 Forum code source        []
Home >> Forum
  Veillez-vous identifier  

 Login :
 Password :
 

Pas encore un compte ?


Auteur :
Sujet : En java besoin d aide!!
 

rosa

 
Posté le : 2009-12-24 04:16
Bonjour,
en java j ai une classe a:
public class a{
static int i=5;
static int j=5;
static void test (int j){
i+=j;
j+=5;
}

public static void main (......)
{
test (i)
}
je veux savoir comment la valeur de i va etre egale a 10 meme que c est un passage par valeur !!
merci d avance
 

Auteur :
Sujet : En java besoin d aide!!
 

bobjov

 
Posté le : 2009-12-24 04:17
Déjà c'est pas très malin d'avoir appelé ta variable j dans ta fonction test car elle porte le même nom que ta variable global j!

dc que veux tu faire avec ta fonction test()????
et pk veux tu mettre tes fonctions en static???
 

Auteur :
Sujet : En java besoin d aide!!
 

bobjov

 
Posté le : 2009-12-24 04:18
Ah ok!!!
ben au début
i = 5
et j on s'en fou

ton main appel la fonction test(i)
celà signifie que dans ta fonction test le j sera remplacé par la valeur de i (pour le moment égale à 5)

dc ta fonction test fait : i+=5 ce qui équivaut à i= i+5 ce qui équivaut à i=5+5 donc égale à 10. si c'est ça ta question...
 

Auteur :
Sujet : En java besoin d aide!!
 

dan

 
Posté le : 2009-12-24 04:19
Salut,

J'ai modifié ton extrait de code comme ceci:

public class EssaiMethodeTest
{
private static int i=5;
private static int j=5;

static void test(int j2) // avec test(int j) tu déclarais un autre j
// visible uniquement dans la méthode test
// et quand tu faisais j+=5 c'est ce j que tu modifiais
// pas celui de la classe qui restait toujours a 5
{
i+=j2;
j+=5;
}

public static void main (String[] args)
{
test(i); // tu passes le i déclaré dans la classe et qui vaut 5
// j2 vaut donc 5 et i passe a 10 en faisant i+=j2
// j qui vaut 5 passe a 10 en faisant j+=5
System.out.println("\ni = " + i);
System.out.println("j = " + j + "\n");

// Attention: si tu appeles de nouveau test(...):
test(i); // tu passes le i déclaré dans la classe et qui vaut 10 maintenant
// j2 vaut donc 10 et i passe a 20 en faisant i+=j2
// j qui étais a 10 vaut maintenat 15 en faisant j+=5
System.out.println("\ni = " + i);
System.out.println("j = " + j + "\n");

// A toi de voir si tu dois réinitialiser i et j a 5 avant un nouvel appel de test(---) ou pas
}
}


Lis les commentaires compile et execute et dis moi si tu as besoin de plus de précisions.

Cordialement,

Dan
 

Auteur :
Sujet : En java besoin d aide!!
 

donky

 
Posté le : 2009-12-24 04:20
Re,

public static void test(int j)
{
i+=j; // i est le i de la classe
j+=5; // j est le j paramètre pas le j de la classe
}

Tu déclares un paramètre j qui sera initialisé avec la valeur correspondant à celle passée depuis la méthode main (donc static) >> test (i); soit 5. Or int j existe déjà au niveau classe (en static aussi)
et qui ne sera pas modifié par la méthode test (j+=5;) et restera à 5
Par contre i sera modifië et prendra bien la valeur 10.


public static void test(int j2) // ou k pourquoi pas qui vaudra 5
{
i+=j2; // i passera également à 10 comme ci-dessus
j+=5; // mais cette fois j passera à 10 et tout dépend de l'utilisation que tu veux en faire ce qui n'est pas indiqué car pour l'intant il est incrémenté c'est tout...

Dan
}
 

Auteur :
Sujet : En java besoin d aide!!
 

xxx

 
Posté le : 2010-07-17 14:36
hi i need help
 




Nouveau message
  Titre de message :
  Pseudo :
  Email :
  Catégorie du forum :
     
     
  Message :  
 
     
Entrez les chiffes tel qu'ils apparaîssent dans la zone ci-dessous.

 
Query failed (Erreure affichage part_footer)!