Académique Documents
Professionnel Documents
Culture Documents
Accueil ↔ S O M M A I R E
EXERCICE 1
Ecrire une méthode qui étant donné les deux côtés (adjacent et opposé) d' un triangle rectangle, retourne son
hypothénuse.
CORRECTION 1
Vous vous souvenez certainement du fameux théorème de pythagore : Dans un triangle rectangle, le carré de l'
hypothénuse est égale à la somme des carrés des 2 autres côtés. Donc l' hypothénuse est égale à la racine carré des
la somme des carrés des 2 autres côtés.
Les arguments sont donc les 2 côtés. Et le résultat fourni (renvoyé, retourné) est donc l' hypothénuse.
EXERCICE 2
Ecrire une méthode qui étant donné un nombre réel, renvoie sa valeur absolue
CORRECTION 2
Avant toute chose, sachez que vous n' avez pas besoin d' écrire une méthode qui existe déjà. Et la méthode qui retourne
la valeur absolue d' un nombre réel existe déjà. C' est la méthode abs() de la classe Math. Vous vous souvenez ? Sinon,
regardez par ici
www.neophytes.info/java/b1.html 1/7
26/12/2023 08:00 debutant java: écritude de méthodes
Si j' ai voulu écrire cette méthode, c' est pour vous montrer qu' on peut avoir dans une méthode, 2 instructions return.
Mais attention, ça ne veut pas dire qu' une méthode peut retourner 2 valeurs. Jamais, jamais, jamais. Une méthode
retourne toujours une et une seule valeur. Mais comme vous pouvez le voir, les 2 instructions sont dans une structure
conditionnelle. La valeur absolue de a sera a si a est positif et -a dans le cas où a est négatif. Donc, en fin de compte,
une seule valeur sera retournée.
Bien entendu, les méthodes ne sont pas toutes de type double avec des arguments de type double. A partir de
maintenant, nous allons varier les plaisirs.
EXERCICE 3
Ecrire une méthode qui, étant donné un tableau de nombres entiers et un nombre entier quelconque, teste la présence
de ce nombre dans ce tableau.
Lorsque vous verrez un exercice sur les méthodes avec les mots (teste, ou vérifie, ou permet de savoir si), sachez que
vous avez affaire une méthode de type booléen. Mais attention, ne vous concentrez pas sur ces mot ou expressions
pour dire qu' une méthode est de type booléenne. Il s' agit surtout de réfléchir un peu en se posant la question suivante.
L' énoncé de l' exercice pose-t-elle une question à laquelle il faut forcément répondre par vrai ou par faux ? Si c' est le
cas, alors, la méthode est de type booléenne.
Ici, l' énoncé permet de se poser la question suivante : Ce nombre entier est-il dans le tableau de nombres entiers ?
Réponse = vrai ou faux.
Donc, méthode de type booléenne. Et le type booléen en java utilise le mot clé boolean.
correction 3
1. public static boolean nombreDansTableau(int a, int [] tab)
2. {
3. boolean verite = false;
4. for(int i = 0; i < tab.length; i++)
5. {
6. if(tab[i] == a)
7. {
8. verite = true;
9 . break;
10. }
11. }
12. return verite;
11. }
Lorsque nous devons écrire une méthode booléenne, nous devons définir une variable booléenne. Le type d' une
méthode c' est le type de la valeur retournée. Donc, dans la définition d' une méthode, nous devons définir une variable
booléenne : ligne 3. Je l' ai initialisée à false pour une raison que j' indique ci-dessous.
Puis je parcours le tableau du premier au dernier élément (ligne 4). En disant que si l' élément actuel a la même valeur
que la variable a, alors verite (variable bolléenne) est égale à true. Puisque effectivement, cela veut dire que la réponse
à la question qu' on se pose est :Vrai Et dans ce cas, on sort de la boucle (break, ligne 9). Puisque si on a trouvé au
moins un élément du tableau dont la valeur est celle de a, il est inutile de comparer a avec les autres éléments. Raison
pour laquelle on initialise à false. Ainsi, on n' est pas obligé de parcourir tout le tableau, au cas où on trouve avant la
fin, un élément qui correspond.
Puis on retourne la variable booléenne verite..
C' est bien beau de savoir écrire une méthode. Mais encore faut-il savoir l' utiliser. On peut utiliser une méthode dans
la méthode main() Cas le plus fréquent. Mais on peut aussi l' utiliser dans une autre méthode. Commençons d' abord
par utiliser les méthodes écrites ci-dessus dans une méthode main()
Lorsque vous écrivez une méthode dans la classe contenant la méthode main(), je vous conseillerais de mettre cette
méthode sous la méthode main(). Ce n' est pas une obligation. Mais je trouve logique de voir d' abord main() puisque c'
est elle qui contient toutes les instructions du programme.
Je vous rappelle que lorsqu' on utilise une fonction dans la classe où elle est définie, on invoque tout simplement le
www.neophytes.info/java/b1.html 3/7
26/12/2023 08:00 debutant java: écritude de méthodes
nom de la méthode. Lorsqu' on utilise une méthode, on dit qu' on appelle cette méthode. Ainsi, j' appelle sur la ligne 5,
la méthode carre() déclarée ligne 27. Il existe diverses façons d' appeler une méthode.
L' expression carre(5.0) représente la valeur 25.0 parce que la méthode carre() retourne le carré de la valeur qui se
trouve dans ses parenthèses. C' est pourquoi vous verrez à l' affichage : le carre de 5.0 = 25.0
L' expression double a = carre(6.0); signifie mettre 36.0 (représenté par l' expression carre(6.0) dans la variable a. C'
est pourquoi vous verrez à l' affichage : le carre de 6.0 = 36.0
L' expression carre(x) veut dire, prendre la valeur de x (ici = 12, ligne 10), puis calculer son carré grâce à la méthode
carre(). C' est pourquoi vous verrez à l' affichage : le carre de x = 144.0
Utilisez le même raisonnement pour compredre les autres lignes de code jusqu' à ligne 19.
Pour la méthode de type booléenne nombreDansTableau(), c' est encore le même raisonnement. Sauf qu' ici, ce n' est
pas un nombre qui s' affiche. Plutôt la valeur true. Puisque la méthode retourne une valeur booléenne. Vous voyez bien
que la valeur 5 se trouve bien dans le tableau.
Exercice à faire. Changer la valeur de nombre en donnant par exemple la valeur 55. Vous verrez afficher false
parce que 55 n' est pas une valeur du tableau
EXERCICE 4
Ecrire une méthode qui, étant donné une chaine de caractères et un caractère quelconque, teste la présence de ce
caractère dans cette chaine.
CORRECTION 4
C' est du déjà vu non ? Je déclare ma variable booléenne avant la boucle. Car une variable déclarée dans la boucle
disparaît en sortie de boucle. Or c' est la variable à retourner. Puis je parcours la chaine pour voir si un caractère en
position i de la chaine correspond au caractère. Si c' est oui, verite = true. Puis on sort aussitôt de la boucle dès qu' on
trouve ce caractère. Si ce n' est pas le cas, la valeur reste à false comme déclarée. L' intérêt d' initialiser la variable à
false vient de ce que on est pas obliger de faire le else après le if. Puisque le else correspond déjà à la situation où cette
valeur est false.
Rappel : La méthode charAt() de la classe String renvoie le caractère dont la position dans la chaine est représentée par
le nombre entier dans les parenthèses. chaine.charAt(2) est le caractère situé en position 2 de chaine. Autrement dit, le
troisième caractère du contenu de la variable chaine.
Rappel : Les valeurs booléennes (true ou false) ne sont pas faites pour être affichées. On utilise leur existence surtout
dans des structures conditionnelles if...else.
En fait, pas besoin d'écrire cette méthode. Elle existe déjà. C'est la méthode indexOf() de la classe String. Comment
l'utiliser ?
char c = 'z'; String s = new String("zaroskyé); Nous savons que s.indexOf(c) retourne le numéro de la position de c
dans s. Ici, c'est 0 (zéro).
Si le caractère n'existe pas dans la chaine de caractères, le numéro est -1. Donc, dans un programme, vous écrirez par
exemple :
if (s.indexOf(c) == -1)
{ ... suite des instructions}
www.neophytes.info/java/b1.html 4/7
26/12/2023 08:00 debutant java: écritude de méthodes
if (s.indexOf(c) < 0)
{ ... suite des instructions}
J'ai demandé pourquoi ? ... Il m'a dit qu'il est possible que ça donne un nombre inférieur à zéro qui n'est pas - 1.
ça ne s'est jamais vérifié sur mon PC. Mais j'ai quand même pris l'habitude d'écire < 0 au lieu de == - 1.
EXERCICE 5
Copiez la méthode caractereDansChaine() ci-dessus et collez là dans la classe TesterMethodes ci-dessus. Puis dans la
méthode main(), collez le code ci-dessous après la ligne 23 de cette classe.
CORRECTION 5
char t = 'N'; String nom = "KENNEDY";
if(caractereDansChaine(nom, t))
{
System.out.println("Le caractere " + t + " se trouve bien dans " + nom);
}
else
{
System.out.println("Le caractere " + t + " ne se trouve pas dans " + nom);
}
Compilez puis exécutez. Vous verrez afficher : Le caractere N se trouve bien dans KENNEDY
Ensuite, changez 'N' en 'n'. Vous verrez afficher Le caractere n ne se trouve pas dans KENNEDY
Ce qui est normal. Le langage java est sensible à la casse. Il fait la différence entre majuscule et minucule. n est
différent de N
L' expression caractereDansChaine(nom, t) représente la valeur true si la valeur de la variable t (ici, 'N') se trouve bien
dans la valeur de la variable chaine (ici, KENNEDY). Cette valeur est alors true.
IMPORTANT !
Lorsqu' on utilise une méthode définie avec deux arguments, on l' utilise en y mettant deux valeurs dont les types
correspondent à ceux des arguments.
Exemple : La méthode caractereDansChaine() a été définie (exercice 6) avec 2 arguments : le premier, un variable de
type String et le deuxième, une variable de type char. Donc, quand je l' utilise (l' appelle), je respecte l' ordre et la
nature des valeurs. Regardez CORRECTION 7 de l' EXERCICE 7 : if(caractereDansChaine(nom, t)). nom est de type
String et t est de type char. Si je m' amuse à faire : if(caractereDansChaine(t, nom)) Message d' erreur à la compilation.
Autant on a l' obligation absolue de respecter l' ordre des arguments. L' obligation de respecter la nature est plutôt
relative. En effet, je vous ai déjà dit qu' en Java, il existe la notion de conversion implicite. Si une méthode requiert
comme argument, une variable de type double, vous pouvez utiliser byte, short, int, long et float. Car ces types sont
tous convertibles implicitement en double.
EXERCICE 6
Ecrire une méthode permettant d' afficher un menu. N' importe lequel. Choisissez les thèmes.
CORRECTION 6
Il me semble que toute personne ayant utilisé une carte de crédit a vu quelque chose de similaire. Pas forcément la
même chose bien sûr. Lorsque une méthode est de type void, elle ne renvoie (retourne, fournit) aucune valeur. On ne
www.neophytes.info/java/b1.html 5/7
26/12/2023 08:00 debutant java: écritude de méthodes
peut donc pas s' amuser à écrire a = afficheMenuBanque(); Quelque soit le type de a. Puisqu' il n' y a pas de return, rien
se sera affectée à la variable a. Pire, y aura même afficha d' un message d' erreur.
Ici, il n' y a pas non plus d' argument. Donc, on n' utilise pas la méthode en y mettant quelque chose. Message d' erreur
aussi si on tente d' y mettre une valeur.
Comment appelle-t-on (utilise-t-on) une méthode de type void ? On écrit simplement le nom de la méthode. Ici, il
suffit d' écrire : afficheMenuBanque(); Et le tour est joué. Il s' affiche alors le menu décrit dans la définition de la
méthode.
Attention : une méthode de type void ne possède pas forcément zéro arguments.
EXERCICE 7
Ecrire une méthode qui, étant donné un tableau de chaines, affiche chacune des valeurs sur une ligne valeurs
CORRECTION 7
Vous voyez ? Pour utiliser cette méthode, il suffit d' écrire : afficheTableau(nom)
nom étant le nom de la variable tableau dont on cherche à afficher les valeurs. Autre exemple.
EXERCICE 8
Ecrire une méthode qui, étant donné un tableau d' entiers, affiche les valeurs du tableau sur la même ligne
CORRECTION 8
www.neophytes.info/java/b1.html 6/7
26/12/2023 08:00 debutant java: écritude de méthodes
Accueil ↔ S O M M A I R E
www.neophytes.info/java/b1.html 7/7