En java besoin d aide!!

Fermé
rosaRosi Messages postés 39 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010 - 23 déc. 2009 à 20:24
rosaRosi Messages postés 39 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010 - 24 déc. 2009 à 09:38
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 dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
23 déc. 2009 à 20:28
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 vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
23 déc. 2009 à 20:33
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 mercredi 23 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009
23 déc. 2009 à 23:30
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 vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
23 déc. 2009 à 23:33
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 mercredi 23 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009
23 déc. 2009 à 23:36
et quelle est le but de l'exercice? quel est le but de ton exercice???
0
rosaRosi Messages postés 39 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
23 déc. 2009 à 23:46
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 mercredi 23 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009
23 déc. 2009 à 23:51
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 vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
24 déc. 2009 à 00:02
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 mercredi 23 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009
24 déc. 2009 à 00:03
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 vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
24 déc. 2009 à 00:07
ok!!
0
Utilisateur anonyme
24 déc. 2009 à 00:17
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 mercredi 23 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009
24 déc. 2009 à 00:19
lol voilà. dan était plus précis et plus courageux que moi ^^
0
rosaRosi Messages postés 39 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
24 déc. 2009 à 00:25
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
24 déc. 2009 à 00:59
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 vendredi 4 décembre 2009 Statut Membre Dernière intervention 25 avril 2010
24 déc. 2009 à 09:38
merci bocou pr ton aide ! :))))))))))))))))) j ai compri !!
0