En java besoin d aide!!

rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

15 réponses

scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   425
 
Ce sont des variables statiques, à savoir qu'elles sont déclarées pour toute la classe et donc le traitement à l'intérieur d'une méthode affecte la valeur à l'intérieur d'une autre.
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
dz. mais j ai pas bien saisie comment elle soritra av une valeur de 10 meme que c est statique !!
pourriez -vous m eclairé ?
merci :)
0
bojinov99 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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???
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
c est pas moi qui fait ce programme!
c est juste un exercice !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bojinov99 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
et quelle est le but de l'exercice? quel est le but de ton exercice???
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
le but de cet exercice c est de bien manipuler les passage par arguments !! et je veut connetre la valeur de i sortant de la methode test(i) dans le programme principale!!
et merci !
0
bojinov99 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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....
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
oui c est ca ma question merci !!
mais dans le programme principale j ai appelé i pas j !! c est parceke il faut que cette methode utilise l attribut j?? j ai un peu d ambiguité ! mercii encore de ton aide :)
0
bojinov99 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
en fait là ta variable static j ne sert à rien car tu ne l'utilises jamais!!!!!
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
ok!!
0
Utilisateur anonyme
 
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
0
bojinov99 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
lol voilà. dan était plus précis et plus courageux que moi ^^
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
merci danimo:
mais dans mon execice la premiér question c etait comme j ai ecri test (int j)
et la deuxieme question c etait de remplacer j par k dans test (int j) comme tu a ecri .
alors il existe une difference entre les deux !!
0
Utilisateur anonyme
 
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
}
0
rosaRosi Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
 
merci bocou pr ton aide ! :))))))))))))))))) j ai compri !!
0