Questions sur la programmation en java
Résolu
azerty0123
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
azerty0123 -
azerty0123 -
Bonjour,
Je suis novice en informatique et dans le cadre de ma licence je fais du langage Java.
Tout d'abord j'aimerai savoir ce que signifie SetN, en effet dans un examen, j'ai eu l'exercice suivant:
Qu'af?che le programme Java contenant ces deux classes lors de son execution ?
Soit les deux classes Java suivantes :
p u b l i c c l a s s Main f
p u b l i c s t a t i c v o id main ( S t r i n g [ ] a r g s ) f
To to a ;
a = new To to ( ) ;
a . s e tN ( 1 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 7 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 8 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 1 2 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 3 7 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
et
p u b l i c c l a s s To to f
p r i v a t e i n t n ;
p u b l i c To to ( ) f
t h i s . n = 0 ;
p u b l i c v o id s e tN ( i n t n ) f
t h i s . n = n ;
p u b l i c S t r i n g a f f i c h e ( ) f
i n t i ;
i n t j = t h i s . n ;
S t r i n g r e s = "" ;
w h ile ( j > 0 )
i = j % 8 ;
r e s = S t r i n g . v a lu e O f ( i ) + r e s ;
j = j / 8 ;
r e t u r n r e s ;
J'ai aussi un soucis avec les classes, je ne vois pas trop ce que c'est, est ce que le deuxieme programme est une classe?
En esperant une réponse de votre part, je vous remercie infiniment.
Je suis novice en informatique et dans le cadre de ma licence je fais du langage Java.
Tout d'abord j'aimerai savoir ce que signifie SetN, en effet dans un examen, j'ai eu l'exercice suivant:
Qu'af?che le programme Java contenant ces deux classes lors de son execution ?
Soit les deux classes Java suivantes :
p u b l i c c l a s s Main f
p u b l i c s t a t i c v o id main ( S t r i n g [ ] a r g s ) f
To to a ;
a = new To to ( ) ;
a . s e tN ( 1 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 7 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 8 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 1 2 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
a . s e tN ( 3 7 ) ;
System . o u t . p r i n t l n ( a . a f f i c h e ( ) ) ;
et
p u b l i c c l a s s To to f
p r i v a t e i n t n ;
p u b l i c To to ( ) f
t h i s . n = 0 ;
p u b l i c v o id s e tN ( i n t n ) f
t h i s . n = n ;
p u b l i c S t r i n g a f f i c h e ( ) f
i n t i ;
i n t j = t h i s . n ;
S t r i n g r e s = "" ;
w h ile ( j > 0 )
i = j % 8 ;
r e s = S t r i n g . v a lu e O f ( i ) + r e s ;
j = j / 8 ;
r e t u r n r e s ;
J'ai aussi un soucis avec les classes, je ne vois pas trop ce que c'est, est ce que le deuxieme programme est une classe?
En esperant une réponse de votre part, je vous remercie infiniment.
A voir également:
- Questions sur la programmation en java
- 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
3 réponses
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.
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.
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?
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 :)
c'est bete comme question, mais en java ca donnerai quoi?
"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) !