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 -
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
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:
- En java besoin d aide!!
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
15 réponses
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.
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 :)
pourriez -vous m eclairé ?
merci :)
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???
dc que veux tu faire avec ta fonction test()????
et pk veux tu mettre tes fonctions en static???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
et merci !
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....
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....
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 :)
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 :)
Salut,
J'ai modifié ton extrait de code comme ceci:
Lis les commentaires compile et execute et dis moi si tu as besoin de plus de précisions.
Cordialement,
Dan
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
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 !!
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 !!
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
}
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
}