Questions sur la programmation en java
Résolu/Fermé
azerty0123
Messages postés
3
Date d'inscription
mercredi 9 novembre 2011
Statut
Membre
Dernière intervention
22 décembre 2011
-
Modifié par azerty0123 le 22/12/2011 à 14:15
azerty0123 - 23 déc. 2011 à 15:14
azerty0123 - 23 déc. 2011 à 15:14
A voir également:
- Questions sur la programmation en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Application de programmation - Guide
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
22 déc. 2011 à 22:40
22 déc. 2011 à 22:40
Les deux fichiers sont des classes (ils commencent par le mot clé "class")
"Exécuter un programme" c'est appeler une méthode main d'une classe.
Ici, il s'agit de la méthode main de la classe Main où l'objet a est une instance de la classe Toto, donc a.setN est un appel à la méthode setN défini dans la classe Toto...
PS : la prochaine fois que tu fais le copier-coller d'un code, assures-toi que celui-ci reste lisible, parce qu'avec des espaces partout et les accolades en moins, c'est horrible à lire !
"Exécuter un programme" c'est appeler une méthode main d'une classe.
Ici, il s'agit de la méthode main de la classe Main où l'objet a est une instance de la classe Toto, donc a.setN est un appel à la méthode setN défini dans la classe Toto...
PS : la prochaine fois que tu fais le copier-coller d'un code, assures-toi que celui-ci reste lisible, parce qu'avec des espaces partout et les accolades en moins, c'est horrible à lire !
Ahhhhh merci beaucoup c'est plus clair pour moi.
Mais alors pour n=1, ca veut dire que j=1, donc que i=0 (1%8==0) et donc que res=0 (car valeur of i==0 et res =0 au debut)).
Or dans la correction, le resutats est 1.
Mais alors pour n=1, ca veut dire que j=1, donc que i=0 (1%8==0) et donc que res=0 (car valeur of i==0 et res =0 au debut)).
Or dans la correction, le resutats est 1.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
23 déc. 2011 à 11:25
23 déc. 2011 à 11:25
Je me suis trompé : 1%8==1, 7%8==7, et de manière générale : (bq+r)%b==r
Donc si je fais pour n=2, dans ce cas j=1, donc i=1 (car 2%8=1) et donc res= 1+1 car res = 1 puisque pour n=1 res=1.
Pour n=3, j=3, donc i=1, et res=1+2=3
Pour n=4, j=4, donc i=1, et res=1+3
pour n=5, j=5, donc i=1, et res=1+4
Pour n=6, j=6 donc i=1 et res=1+5
Pour n=7, j=7 donc i=1, et res=1+6;
Pour n=8, j=8, et i=0, et donc res=0+7;
Mais dans la correction pour n=8, res renvoi 10.
Pour n=3, j=3, donc i=1, et res=1+2=3
Pour n=4, j=4, donc i=1, et res=1+3
pour n=5, j=5, donc i=1, et res=1+4
Pour n=6, j=6 donc i=1 et res=1+5
Pour n=7, j=7 donc i=1, et res=1+6;
Pour n=8, j=8, et i=0, et donc res=0+7;
Mais dans la correction pour n=8, res renvoi 10.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
23 déc. 2011 à 13:16
23 déc. 2011 à 13:16
Il faut que tu décortiques ton code pour comprendre comment il marche
n=8, j=n(=8), res="" i=j%8(=0), res=i+res(=0+""="0"), j=j/8(=8/8=1) i=j%8(=1), res=i+res(=1+"0"="10"), j=j/8(=1/8=0) return res(="10")
Donc si je fais pareil pour n=37:
n=37, j=37, res=" ";
i=j%8=37%8=5 donc res=5+" "="5", j=j/8=37/8=4
i=4%8=1 res=1+"5"="15" j=j/8=4/8=0
return res (="15")
Pourquoi je trouve 15 alors qu'on devrait trouver 45
Pour n=12, j=12, i=12%8=4 donc res=4+" "="4" j=12/8=1
i=1%8=1 donc res=1+"4" = "14" j=1/8=0
return res (=14)
La j'obtiens bien la bonne valeur donc pourquoi je ne trouve pas 45 pour n=37, où est mon erreur?
n=37, j=37, res=" ";
i=j%8=37%8=5 donc res=5+" "="5", j=j/8=37/8=4
i=4%8=1 res=1+"5"="15" j=j/8=4/8=0
return res (="15")
Pourquoi je trouve 15 alors qu'on devrait trouver 45
Pour n=12, j=12, i=12%8=4 donc res=4+" "="4" j=12/8=1
i=1%8=1 donc res=1+"4" = "14" j=1/8=0
return res (=14)
La j'obtiens bien la bonne valeur donc pourquoi je ne trouve pas 45 pour n=37, où est mon erreur?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
23 déc. 2011 à 14:46
23 déc. 2011 à 14:46
i=4%8=4, res=4+"5"="45" j=j/8=4/8=0
23 déc. 2011 à 00:42
p u b l i c c l a s s Toto { Là on définit la classe qu'on appel toto
p r i v a t e i n t n ; Là on définit n, mais pourquoi on met private devant alors?
p u b l i c Toto ( ) {
t h i s . n = 0 ;
On définit n à 0, si j'ai bien compris on met this.n pour definir une valeur de n
}
p u b l i c void s e tN ( i n t n ) { Ici, on définit la fonction SetN
t h i s . n = n ; On redefinit n comme etant egale à n et non plus à 0
}
p u b l i c S t r i n g a f f i c h e ( ) { Fonction affiche
i n t i ;
i n t j = t h i s . n ;
S t r i n g r e s = " " ; Ici, pourquoi on met String res et non pas int res?
wh i l e ( j > 0) {
i = j % 8 ;
Le % me pose probleme, c'est pas divisé, donc c'est quoi? par exemple 14 %8 ca donne quoi?
r e s = S t r i n g . va lueOf ( i ) + r e s ;
cela signifie res=valeur de i + valeur de res? Mais res = " " rien en faites.
j = j / 8 ;
Pourquoi definir j=j/8 apres avoir ecrit la valeur de res, la valeur de i depend de j, mais on prend j comme etant egale à n, et maintenant on veut j=j/8, je comprends plus trop.
}
r e t u r n r e s ;
}
}
Voila le programme réecrit correctement.
Je comprends mieu certaine chose, mais maintenant ce qui me pose probleme c'est que le programme doit afficher 1, 7, 10, 14, 45. J'ai mis en gras ce que je pensais avoir compris et les questions que je me pose.
Ca serait vraiment très gentil de m'expliquer ça. Je pense que ça pourrait grandement m'aider.
Merci infiniment :)
23 déc. 2011 à 00:50
c'est bete comme question, mais en java ca donnerai quoi?
23 déc. 2011 à 10:11
"pourquoi on met private" : regarde ce qu'est l'accessibilité
"on met this.n pour definir une valeur de n" : pas n'importe laquelle, uniquement celle de l'objet courant (this), ici faire this.n=0 est exactement pareil que faire n=0 (this est implicite)
"on redefinit n" : non, on modifie sa valeur, la redéfinition c'est autre chose (voir l'héritage)
"pourquoi on met String et non pas int" : ça c'est parce qu'on ne veut plus un entier, mais une chaîne de caractères (regarde les types de données)
"Le % me pose probleme", c'est le reste de la division entière, donc a%b==a-(a/b)*b, 1%8==7%8==0
res = " " rien en faites, uniquement au départ, mais après tu modifies res, donc ce n'est plus vrai.
"Pourquoi definir j=j/8" : interroges toi sur ce que dois faire ton programme, en le testant par exemple, en le modifiant un peu, et le retestant, en ajoutant quelques affichages... Si tu ne modifies pas j, tu auras toujours les mêmes valeurs i et j dans ta boucle while, et ton programme fera toujours la même chose, sans s'arrêter (à cause de la condition d'arrêt j>0) !