Vous êtes sur la page 1sur 149

Java : fondamentaux

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

elmouelhi.achref@gmail.com

H & H: Research and Training 1 / 95


Plan

1 Variables
Typage statique
Typage dynamique
2 Opérations sur les variables
3 Classe Math
4 Lecture d’une saisie
5 Structures conditionnelles
if
if ... else
if ... else if ... else
switch
Expression ternaire

H & H: Research and Training 2 / 95


Plan

6 Structures itératives
while
do ... while
for

7 Tableaux
Tableaux à une dimension
Tableaux à deux dimensions

8 Constantes

9 Méthodes

H & H: Research and Training 3 / 95


Variables

Java

Une variable ?
Pointeur vers une zone mémoire
Permettant de stocker une ou plusieurs données
H I ©
Pouvant avoir plusieurs valeurs différentesE
U L un programme
dans

L MO
r e f E
A ch
©

H & H: Research and Training 4 / 95


Variables

Java

Une variable ?
Pointeur vers une zone mémoire
Permettant de stocker une ou plusieurs données
H I ©
Pouvant avoir plusieurs valeurs différentesE
U L un programme
dans

L MO
r e f E
A
Java : langage de ch
programmation fortement typé
©
Il faut préciser le type de chaque variable
Une variable peut avoir de valeurs différentes mais ne peut
changer de type.

H & H: Research and Training 4 / 95


Variables

Java

Deux modes de typage en Java


H I ©
la L
Statique : type précisé à la déclaration de E variable
U
L
Dynamique : variable déclarée avec MOle mot-clé var ⇒ type
e
déterminé dynamiquement
r f Eà partir de la valeur initiale. [disponible
depuis Java 11]
A ch
©

H & H: Research and Training 5 / 95


Variables

Java

Nom de variables en Java

Utiliser le CamelCase

Premier caractère : lettre (ni ni $)

H I ©
Caractère espace non autorisé
U EL
O
LM
Underscore non autorisé comme nom de variable depuis Java 9

e f E
Privilégier les noms en relation avec le contexte
r
un c
Ne pas choisirA
h
mot-clé du langage
©
Ne pas choisir un ancien mot-clé du langage comme goto ou const
(liste de mots-clés : https://docs.oracle.com/javase/tutorial/
java/nutsandbolts/_keywords.html)

Sensible à la casse

H & H: Research and Training 6 / 95


Variables Typage statique

Java

Déclarer une variable


type nomVariable;

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 7 / 95


Variables Typage statique

Java

Déclarer une variable


type nomVariable;

H I ©
U EL
Deux choix possibles pour typer L M O
les variables
f E
re : commencent par une lettre en
Types simples c h
(primitifs)
©A
minuscule
Types objets : commencent par une lettre en majuscule

H & H: Research and Training 7 / 95


Variables Typage statique

Java
Principaux types primitifs en Java

byte : entier codé sur 1 octet (entre -128 et 127)

short : entier codé sur 2 octets (entre -32 768 et 32 767)

H I
int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647) ©
U EL
long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
O
LM
775 807)

f E
float : nombre à virgule codé sur 4 octets
r e
ch
©A
double : nombre à virgule codé sur 8 octets

boolean : soit true soit false (1 octet)

char : caractère codé sur 2 octet situé entre deux ’

H & H: Research and Training 8 / 95


Variables Typage statique

Java
Principaux types primitifs en Java

byte : entier codé sur 1 octet (entre -128 et 127)

short : entier codé sur 2 octets (entre -32 768 et 32 767)

H I
int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647) ©
U EL
long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
O
LM
775 807)

f E
float : nombre à virgule codé sur 4 octets
r e
ch
©A
double : nombre à virgule codé sur 8 octets

boolean : soit true soit false (1 octet)

char : caractère codé sur 2 octet situé entre deux ’

Pas de type primitif pour les chaı̂nes de caractère.

H & H: Research and Training 8 / 95


Variables Typage statique

Java
Exemple
int x;

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 9 / 95


Variables Typage statique

Java
Exemple
int x;

Déclarer et initialiser une variable


int x = 5;
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 9 / 95


Variables Typage statique

Java
Exemple
int x;

Déclarer et initialiser une variable


int x = 5;
H I ©
U EL
O
Ceci est une erreur
f E LM
byte x = 130;
ch r e
©A

H & H: Research and Training 9 / 95


Variables Typage statique

Java
Exemple
int x;

Déclarer et initialiser une variable


int x = 5;
H I ©
U EL
O
Ceci est une erreur
f E LM
byte x = 130;
ch r e
©A
Pour convertir le contenu d’une variable (le cast pour les types
compatibles)
int x = 100;
byte z = (byte) x;
System.out.println(z); // affiche 100
H & H: Research and Training 9 / 95
Variables Typage statique

Java

Attention aux valeurs qui dépassent l’intervalle


H I ©
int x = 200; U EL
O
byte z = (byte) x;
System.out.println(z); // affiche -56f E LM
ch r e
©A

H & H: Research and Training 10 / 95


Variables Typage statique

Java
Les emballages (wrapper) de types primitifs (types objets) en Java

Byte pour byte

Short pour short

Long pour long


H I ©
Integer pour int
U EL
O
Float pour float

f E LM
Double pour double
ch r e
©A
Boolean pour boolean

Character pour char

H & H: Research and Training 11 / 95


Variables Typage statique

Java
Les emballages (wrapper) de types primitifs (types objets) en Java

Byte pour byte

Short pour short

Long pour long


H I ©
Integer pour int
U EL
O
Float pour float

f E LM
Double pour double
ch r e
©A
Boolean pour boolean

Character pour char

Il existe aussi plusieurs autres types objets : String, Date...

H & H: Research and Training 11 / 95


Variables Typage statique

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
System.out.println(string); // affiche bonjour

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 12 / 95


Variables Typage statique

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
System.out.println(string); // affiche bonjour

H I ©
EL
On peu aussi faire

String string = new String("bonjour");


O U
f E LM
System.out.println(string); // affiche bonjour

ch r e
©A

H & H: Research and Training 12 / 95


Variables Typage statique

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
System.out.println(string); // affiche bonjour

H I ©
EL
On peu aussi faire

String string = new String("bonjour");


O U
f E LM
System.out.println(string); // affiche bonjour

ch r e
©A
Ou encore

String string = "bonjour";


System.out.println(string); // affiche bonjour

H & H: Research and Training 12 / 95


Variables Typage statique

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
System.out.println(string); // affiche bonjour

H I ©
EL
On peu aussi faire

String string = new String("bonjour");


O U
System.out.println(string); // affiche bonjour

f E LM
ch r e
©A
Ou encore

String string = "bonjour";


System.out.println(string); // affiche bonjour

Une chaı̂ne de caractère doit être située entre deux "contenu"

H & H: Research and Training 12 / 95


Variables Typage statique

Java

Pourquoi les types primitifs et les types objets ?

Les types primitifs sont moins coûteux en mémoire


H I ©
U EL
Les types objets offrent plusieurs méthodes à appliquer sur les
O
f E LM
valeurs : conversion, nombre de caractère...

ch r e
Toutes les classes wrappers contiennent une méthode
©A
(TypeObjet.parseTypeSimple(string)) qui permet de
convertir une chaine de caractère en type primitif de cette classe

H & H: Research and Training 13 / 95


Variables Typage statique

Java

Quelques méthodes de la classe String

length() : retourne le nombre de caractère de la chaı̂ne.

indexOf(x) : retourne l’indice de la première occurrence de la valeur de x dans la


chaı̂ne, -1 sinon.
H I ©
EL
contains() : retourne true si la chaı̂ne contient x, false sinon.
U
O
LM
charAt(i) : retourne le caractère d’indice i dans la chaı̂ne.

e f E
substring(i,j) : permet d’extraire une sous-chaı̂ne de la chaı̂ne à partir de l’indice i
r
jusqu’au l’indice j - 1
ch
©A
equals(str) : permet de comparer la chaı̂ne à str et retourne true en cas d’égalité,
false sinon.

replace(old,new) : permet de remplacer toute occurrence de la chaı̂ne old dans la


chaı̂ne courante par new et retourne la nouvelle chaı̂ne

...

H & H: Research and Training 14 / 95


Variables Typage statique

Java

Exemple : replace(old,new)
String string = "bonjour les bons jours";
String string2 = string.replace("jour", "soir");
System.out.println(string2);
H I ©
// bonsoir les bons soirs
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 15 / 95


Variables Typage statique

Java

Exemple : replace(old,new)
String string = "bonjour les bons jours";
String string2 = string.replace("jour", "soir");
System.out.println(string2);
H I ©
// bonsoir les bons soirs
U EL
O
f E LM
ch
Exemple : indexOf(str,fromIndex) r e
©A
String string = "bonjour les bons jours";
int pos = string.indexOf("bon", 5);
System.out.println(pos);
// affiche 12

H & H: Research and Training 15 / 95


Variables Typage statique

Java
Exemple de conversion d’une chaı̂ne de caractère
String string = "2";
byte z = Byte.parseByte(string);
System.out.println(z); // affiche 2

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 16 / 95


Variables Typage statique

Java
Exemple de conversion d’une chaı̂ne de caractère
String string = "2";
byte z = Byte.parseByte(string);
System.out.println(z); // affiche 2

H I ©
U EL
O
f E LM
Ceci déclenche une exception (arrêt d’exécution)
String string = "a";
ch r e
©A
byte z = Byte.parseByte(string);
System.out.println(z);

Le résultat
Exception in thread "main" java.lang.
NumberFormatException: For input string: "a"

H & H: Research and Training 16 / 95


Variables Typage statique

Java

Exemple de conversion de Integer en String


H I ©
Integer x = 2; U EL
O
String string = x.toString();
f E
System.out.println(string); // affiche 2 LM
ch r e
©A

H & H: Research and Training 17 / 95


Variables Typage statique

Java
Quatre méthodes pour convertir int en String
int y = 3;
String chaine =((Integer) y).toString();
System.out.println(chaine); // affiche 3

H I ©
EL
int z = 4;
String str = Integer.toString(z);
O U
LM
System.out.println(str); // affiche 4

r e f E
ch
int t = 5;

©A
String s = String.valueOf(t);
System.out.println(s); // affiche 5

int u = 6;
String s = "" + u;
System.out.println(s); // affiche 6

H & H: Research and Training 18 / 95


Variables Typage statique

Java

Attention, le cast entre deux types incompatibles n’est pas


H I ©
EL
autorisé
int z = 4; O U
String str =(String) z;
f E LM
System.out.println(str);
ch r e
©A

H & H: Research and Training 19 / 95


Variables Typage statique

Java

Pas besoin de convertir d’un type simple vers son wrapper (ou
inversement)

H I ©
EL
Integer j = 2;
int k = j;
O U
System.out.println(k); // affiche 2
f E LM
int l = 3;
ch r e
Integer m = l; ©A
System.out.println(m); // affiche 3

H & H: Research and Training 20 / 95


Variables Typage dynamique

Java

Déclarer une variable avec le mot-clé var


var nomVariable = valeurInitiale;

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 21 / 95


Variables Typage dynamique

Java

Déclarer une variable avec le mot-clé var


var nomVariable = valeurInitiale;

H I ©
U EL
Remarque O
f E LM
ch r e
Une variable déclarée avec le mot-clé var

©A
doit être initialisée
a un type déterminé en fonction de sa valeur initiale
ne peut changer de type

H & H: Research and Training 21 / 95


Variables Typage dynamique

Java

Exemple
var x = 10;
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 22 / 95


Variables Typage dynamique

Java

Exemple
var x = 10;
H I ©
U EL
O
f E LM
Ceci génère une erreur
ch r e
x = "bonjour";
©A

H & H: Research and Training 22 / 95


Opérations sur les variables

Java

Pour les variables numériques (int, float...)


= : affectation
H I ©
+ : addition
UEL
O
- : soustraction
f E LM
* : multiplication
ch r e
/ : division ©A
% : reste de la division

H & H: Research and Training 23 / 95


Opérations sur les variables

Java

Quelques raccourcis
i = i + 1 ⇒ i++;
H I ©
i = i - 1 ⇒ i--; UEL
O
i = i + 2 ⇒ i += 2;
f E LM
r e
chi -= 2;
A
i = i - 2 ⇒
©
...

H & H: Research and Training 24 / 95


Opérations sur les variables

Java

Exemple de post-incrémentation
int i = 2;
int j = i++;
System.out.println(i); // affiche 3
H I ©
System.out.println(j); // affiche 2
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 25 / 95


Opérations sur les variables

Java

Exemple de post-incrémentation
int i = 2;
int j = i++;
System.out.println(i); // affiche 3
H I ©
System.out.println(j); // affiche 2
UEL
O
f E LM
Exemple de pre-incrémentation
ch r e
int i = 2; ©A
int j = ++i;
System.out.println(i); // affiche 3
System.out.println(j); // affiche 3

H & H: Research and Training 25 / 95


Opérations sur les variables

Java

L’opérateur + pour concaténer deux chaı̂nes de caractère


H I ©
String string = "bon";
UEL
String string2 = "jour"; O
E
System.out.println(string + string2);
f LM
// affiche bonjour
ch r e
©A

H & H: Research and Training 26 / 95


Classe Math

Java

On peut aussi utiliser les méthodes statiques de la classe Math


Math.abs(x) : retourne la valeur absolue de x
Math.pow(x,y) : retourne la x puissance y
H I ©
Math.max(x,y) : retourne le max de x et y
UEL
O
f E LM
Math.min(x,y) : retourne le min de x et y

ch r e
Math.sqrt(x) : retourne la racine carré de x

©A
Math.floor(x), Math.ceil(x) et Math.round(x) :
retournent l’arrondi de x
Math.random() : retourne une valeur aléatoire entre 0 et 1
...

H & H: Research and Training 27 / 95


Classe Math

Java

Exemple avec Math.floor(x), Math.ceil(x) et


Math.round(x)
System.out.println(Math.round(1.9)); // affiche 2
H I ©
System.out.println(Math.round(1.5)); // affiche 2
UEL
O
System.out.println(Math.round(1.4)); // affiche 1

f E LM
System.out.println(Math.ceil(1.9)); // affiche 2

ch r e
System.out.println(Math.ceil(1.5)); // affiche 2

©A
System.out.println(Math.ceil(1.4)); // affiche 2
System.out.println(Math.floor(1.9)); // affiche 1
System.out.println(Math.floor(1.5)); // affiche 1
System.out.println(Math.floor(1.4)); // affiche 1

H & H: Research and Training 28 / 95


Lecture d’une saisie

Java

I ©
Pour lire une valeur saisie par l’utilisateur dans la console
H
EL
il faut utiliser la classe Scanner
M OU
f E
il faut préciser le type de la L à récupérer
valeur
chr e
© A

H & H: Research and Training 29 / 95


Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 30 / 95


Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);

La classe Scanner est signalée en rouge, il faut l’importer


H I ©
import java.util.Scanner; UEL
O
f E LM
ch r e
©A

H & H: Research and Training 30 / 95


Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);

La classe Scanner est signalée en rouge, il faut l’importer


H I ©
import java.util.Scanner; UEL
O
f E LM
Exemple de lecture d’un entier
ch r e
©A
int i = scanner.nextInt();

H & H: Research and Training 30 / 95


Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner(System.in);

La classe Scanner est signalée en rouge, il faut l’importer


H I ©
import java.util.Scanner; UEL
O
f E LM
Exemple de lecture d’un entier
ch r e
©A
int i = scanner.nextInt();

Fermer le scanner
scanner.close();

H & H: Research and Training 30 / 95


Lecture d’une saisie

Java

Remarques
H I ©
EL
Pour lire une chaı̂ne de caractère, il faut utiliser la méthode
U
next() ou nextLine() O
f E LM
Pour lire un nombre réel, il faut utiliser la méthode nextFloat()
ch r e
...
©A

H & H: Research and Training 31 / 95


Lecture d’une saisie

Java
Exemple avec next()
Scanner scanner = new Scanner(System.in);
// si on saisit "bonjour tout le monde"
String string = scanner.next();
System.out.println(string);
H I ©
// affiche bonjour
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 32 / 95


Lecture d’une saisie

Java
Exemple avec next()
Scanner scanner = new Scanner(System.in);
// si on saisit "bonjour tout le monde"
String string = scanner.next();
System.out.println(string);
H I ©
// affiche bonjour
UEL
O
f E LM
Exemple avec nextLine()
ch r e
©A
Scanner scanner = new Scanner(System.in);
// si on saisit "bonjour tout le monde"
String string = scanner.nextLine();
System.out.println(string);
// affiche bonjour tout le monde

H & H: Research and Training 32 / 95


Lecture d’une saisie

Java

À chaque appel à next(), on récupère le token suivant

Scanner scanner = new Scanner(System.in);


// si on saisit "bonjour tout le monde"
String string = scanner.next();
String s = scanner.next();
System.out.println(s);
H I ©
// affiche tout
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 33 / 95


Lecture d’une saisie

Java

À chaque appel à next(), on récupère le token suivant

Scanner scanner = new Scanner(System.in);


// si on saisit "bonjour tout le monde"
String string = scanner.next();
String s = scanner.next();
System.out.println(s);
H I ©
// affiche tout
U EL
O
f E LM
ch r e
Le code suivant déclenche une exception car on ne peut affecter la chaı̂ne "tout" à un

©A
entier

Scanner scanner = new Scanner(System.in);


// si on saisit "bonjour tout le monde"
String string = scanner.next();
int v = scanner.nextInt();
System.out.println(v);

H & H: Research and Training 33 / 95


Lecture d’une saisie

Java

Il n’existe pas une méthode spécifiques aux caractères, mais on


peut faire
H I ©
UEL
Scanner scanner = new Scanner(System.in);
O
String string = scanner.next();
f E LM
char c = scanner.next().charAt(0);
ch r e
©A
System.out.println(c);

H & H: Research and Training 34 / 95


Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 35 / 95


Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

H I ©
UEL
Exemple O
var x = 3;
f E LM
if (x >= 0) {
ch r e
} ©A
System.out.println(x + " est positif");

H & H: Research and Training 35 / 95


Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

H I ©
UEL
Exemple O
var x = 3;
f E LM
if (x >= 0) {
ch r e
} ©A
System.out.println(x + " est positif");

Pour les conditions, on utilise les opérateurs de comparaison

H & H: Research and Training 35 / 95


Structures conditionnelles if

Java

Opérateurs de comparaison

== : pour tester l’égalité


!= : pour tester l’inégalité
H I ©
> : supérieur à
UEL
O
< : inférieur à
f E LM
ch r
>= : supérieur ou égal à e
©A
<= : inférieur ou égal à

H & H: Research and Training 36 / 95


Structures conditionnelles if

Java

Opérateurs de comparaison

== : pour tester l’égalité


!= : pour tester l’inégalité
H I ©
> : supérieur à
UEL
O
< : inférieur à
f E LM
ch r
>= : supérieur ou égal à e
©A
<= : inférieur ou égal à

En Java, on ne peut comparer deux valeurs de type incompatible.

H & H: Research and Training 36 / 95


Structures conditionnelles if

Java

Exercice H I ©
UEL
O
LM
Écrire un code Java qui demande à l’utilisateur de saisir un entier

r e f E
positif et qui affiche ensuite sa parité (sans else).

ch
©A

H & H: Research and Training 37 / 95


Structures conditionnelles if ... else

Java
Exécuter un premier bloc si une condition est vraie, un deuxième sinon (le bloc else)

if (condition1) {
...
}
else {

}
...

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 38 / 95


Structures conditionnelles if ... else

Java
Exécuter un premier bloc si une condition est vraie, un deuxième sinon (le bloc else)

if (condition1) {
...
}
else {

}
...

H I ©
U EL
O
Exemple
f E LM
var x = 3;
ch r e
if (x > 0)
{ ©A
System.out.println(x + " est strictement positif");
}
else
{
System.out.println(x + " est négatif ou nul");
}

H & H: Research and Training 38 / 95


Structures conditionnelles if ... else

Java

Exercice
H I ©
U EL
O
Écrire un programme Java qui permet de déterminer si une chaı̂ne de

f E LM
caractères saisie par l’utilisateur contient un nombre pair ou impair de
caractères.
ch r e
©A

H & H: Research and Training 39 / 95


Structures conditionnelles if ... else if ... else

Java
On peut enchaı̂ner les conditions avec else if (et avoir un
troisième bloc voire ... un nième)
if (condition1)
{
...
H I ©
}
U EL
else if (condition2) O
{
f E LM
...
ch r e
}
... ©A
else
{
...
}

H & H: Research and Training 40 / 95


Structures conditionnelles if ... else if ... else

Java

Exemple
var x = -3;
if (x > 0)
{
H I ©
EL
System.out.println(x + " est strictement positif");
}
O U
LM
else if (x < 0)
{
r e f E
System.out.println(x + " est strictement négatif");
ch
©A
}
else
{
System.out.println(x + " est nul");
}

H & H: Research and Training 41 / 95


Structures conditionnelles if ... else if ... else

Java

Exercice
H I ©
Écrire un code Java qui
U EL
M O
f E L trois entiers a, b et c
demande à l’utilisateur de saisir
affiche le résultath
c derel’équation ax + bx + c = 0. 2

©A

H & H: Research and Training 42 / 95


Structures conditionnelles if ... else if ... else

Java
Opérateurs logiques

&& : et

|| : ou
H I ©
! : non
U EL
O
ˆ : ou exclusif
f E LM
ch r e
©A

H & H: Research and Training 43 / 95


Structures conditionnelles if ... else if ... else

Java
Opérateurs logiques

&& : et

|| : ou
H I ©
! : non
U EL
O
ˆ : ou exclusif
f E LM
ch r e
©A
Tester plusieurs conditions (en utilisant des opérateurs logiques)
if (condition1 && !condition2 || condition3){
...
}
[else ...]

H & H: Research and Training 43 / 95


Structures conditionnelles if ... else if ... else

Java

Exercice 1

H I ©
Écrire un code Java qui
U EL
O
f E LM
demande à l’utilisateur de saisir une année (un entier),

r e
affiche si l’année saisie est bissextile (voir
ch
A
https://fr.wikipedia.org/wiki/Ann%C3%A9e_bissextile
©
).

H & H: Research and Training 44 / 95


Structures conditionnelles if ... else if ... else

Java

Exercice 2

Écrire un code Java qui H I ©


U EL
O
demande à l’utilisateur de saisir deux entiers a et b différents de
zéro,
f E LM
r e
hrésultat de la multiplication sans calculer le
affiche le signecdu
produit.© A

H & H: Research and Training 45 / 95


Structures conditionnelles if ... else if ... else

Java

Exercice 3
H I ©
Écrire un code Java qui
U EL
O
f E LM
demande à l’utilisateur de saisir deux entiers a et b,

ch r e
détermine et affiche si le résultat de l’addition (sans calculer la

©A
somme) est pair ou impair.

H & H: Research and Training 46 / 95


Structures conditionnelles switch

Java
Structure conditionnelle switch : syntaxe
switch (nomVariable) {
case constante-1:
groupe-instructions-1;
break;
H I ©
case constante-2:
UEL
groupe-instructions-2;
O
break;
f E LM
...
case constante-N:
ch r e
©A
groupe-instructions-N;
break;
default:
groupe-instructions-par-défaut;
}

H & H: Research and Training 47 / 95


Structures conditionnelles switch

Java

Remarques

Le switch permet seulement de tester l’égalité


H I ©
Le break permet de quitter le switch une
U L un bloc case
Efois
exécuté
L MO
r e f Eplusieurs case
Il est possible de regrouper
Le bloc © Achest facultatif, il sera exécuté si la valeur de la
default
variable ne correspond à aucune constante de case

H & H: Research and Training 48 / 95


Structures conditionnelles switch

Java
Structure conditionnelle avec switch
int x = 5;
switch (x) {
case 1:
System.out.println("un");
H I ©
break;
UEL
case 2:
O
System.out.println("deux");
f E LM
break;
case 3:
ch r e
©A
System.out.println("trois");
break;
default:
System.out.println("autre");
}

H & H: Research and Training 49 / 95


Structures conditionnelles switch

Java

La variable dans switch peut être


de types simples : int, short, byte et char
H I ©
UEL
O
de type wrappers correspondants : Integer, Short, Byte et
Character
f E LM
ch r e
de type énumération depuis Java 6
©A
de type chaı̂ne de caractère depuis Java 7

H & H: Research and Training 50 / 95


Structures conditionnelles switch

Java
Si on supprime un break
String x = "2";
switch (x) {
case "1":
System.out.println("un");
H I ©
break;
UEL
case "2": O
System.out.println("deux");
f E LM
case "3":
ch r e
©A
System.out.println("trois");
break;
default:
System.out.println("autre");
}
// affiche deux trois

H & H: Research and Training 51 / 95


Structures conditionnelles switch

Java
Un multi-case pour un seul traitement [Java 7]
var x = 5;
switch (x) {
case 1:
case 2:
System.out.println("un ou deux");
H I ©
break;
UEL
case 3: O
System.out.println("trois");
f E LM
break;
ch r e
©A
case 4:
case 5:
System.out.println("quatre ou cinq");
break;
default:
System.out.println("autre");
}

H & H: Research and Training 52 / 95


Structures conditionnelles switch

Java
Un multi-case simplifié [depuis Java 14]
var x = 5;
switch (x) {
case 1, 2:
System.out.println("un ou deux");
H I ©
break;
UEL
case 3:
O
System.out.println("trois");
f E LM
break;
case 4, 5:
ch r e
©A
System.out.println("quatre ou cinq");
break;
default:
System.out.println("autre");
}

H & H: Research and Training 53 / 95


Structures conditionnelles switch

Java

On peut simplifier l’écriture encore plus avec une expression lambda


(->) [depuis Java 14]

H I ©
EL
var x = 5;
switch (x) {
O U
LM
case 1, 2 -> System.out.println("un ou deux");

r e E
case 3 -> System.out.println("trois");
f
case 4, 5 -> System.out.println("quatre ou cinq");
ch
©A
default -> System.out.println("autre");
}

H & H: Research and Training 54 / 95


Structures conditionnelles switch

Java

Si on a plusieurs instructions, on ajoute { } [Java 14]

var x = 5;
switch (x) {
case 1, 2 -> {
H I ©
EL
System.out.println("un ou");
System.out.println("deux");
O U
LM
}

case 4, 5 -> {
r e E
case 3 -> System.out.println("trois");
f
ch
System.out.println("quatre ou");

} ©A
System.out.println("cinq");

default -> System.out.println("autre");


}

H & H: Research and Training 55 / 95


Structures conditionnelles switch

Java
switch peut retourner une valeur [depuis Java 14]
var x = 5;
String result = switch (x) {
case 1, 2 -> {
var tmp = "un ou deux";
H I ©
yield tmp;
UEL
}
O
case 3 -> "trois";
f E LM
case 4, 5 -> {
ch r
var tmp = "quatre ou cinq";e
}
yield tmp;
©A
default -> "autre";
};
System.out.println(result);

H & H: Research and Training 56 / 95


Structures conditionnelles switch

Java

Exercice

Écrire un programme qui demande à l’utilisateur de saisir l’indice d’un


mois (entier compris entre 1 et 12) et qui retourne le nombre de jours
de ce mois
H I ©
EL
OU
si l’entier est égal à 1, 3, 5, 7, 8, 10 ou 12 le programme affiche 31
M
sinon si l’entier est égal àE4, L
6, 9 ou 11 le programme affiche 30
e f
hrégal à 2, le programme demande à l’utilisateur
sinon si l’entierc
de saisir©
A est
l’année et lui retourne 29 si l’année est bissextile, 28
sinon (voir
https://fr.wikipedia.org/wiki/Ann%C3%A9e_bissextile)

pour toute autre valeur, le programme affiche une erreur

H & H: Research and Training 57 / 95


Structures conditionnelles Expression ternaire

Java

Simplifions l’écriture avec l’expression ternaire


H I ©
int x = 2; U EL
O
String type = (x % 2 == 0) ? "pair" : "impair";
f E
System.out.println(type); // affiche pair LM
ch r e
©A

H & H: Research and Training 58 / 95


Structures itératives while

Java

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
while (condition[s]) {
H I ©
...
UEL
} O
f E LM
ch r e
©A

H & H: Research and Training 59 / 95


Structures itératives while

Java

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
while (condition[s]) {
H I ©
...
UEL
} O
f E LM
ch r e
©A
Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien
atteinte après un certain nombre d’itérations.

H & H: Research and Training 59 / 95


Structures itératives while

Java
Exemple
var i = 0;
while (i < 5) {
System.out.println(i);
i++;
H I ©
}
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 60 / 95


Structures itératives while

Java
Exemple
var i = 0;
while (i < 5) {
System.out.println(i);
i++;
H I ©
}
UEL
O
f E LM
Le résultat est
ch r e
0 ©A
1
2
3
4

H & H: Research and Training 60 / 95


Structures itératives while

Java

H I ©
EL
Exercice 1

O U
LM
Écrire un programme qui permet d’afficher les nombres pairs inférieurs
à 10.
r e f E
ch
©A

H & H: Research and Training 61 / 95


Structures itératives while

Java

Exercice 2
H I ©
Écrire un code programme qui
U EL
M O
demande à l’utilisateur de saisirLdeux entiers a et b (avec a < b),

r e f E
A ch
afficher les nombres pairs compris entre a et b.
©

H & H: Research and Training 62 / 95


Structures itératives while

Java

Exercice 3
H I ©
UEL
O
Écrire un programme qui demande à l’utilisateur de saisir un entier

f E LM
positif n et qui calcule puis affiche la somme de tous les entiers positifs
inférieurs à n.
ch r e
©A

H & H: Research and Training 63 / 95


Structures itératives do ... while

Java

La Boucle do ... while exécute le bloc au moins une fois ensuite


elle vérifie la condition
do {
H I ©
...
U EL
}
O
while (condition[s]);
f E LM
ch r e
©A

H & H: Research and Training 64 / 95


Structures itératives do ... while

Java

La Boucle do ... while exécute le bloc au moins une fois ensuite


elle vérifie la condition
do {
H I ©
...
U EL
}
O
while (condition[s]);
f E LM
ch r e
©A
Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien
atteinte après un certain nombre d’itérations.

H & H: Research and Training 64 / 95


Structures itératives do ... while

Java
Exemple
var i = 0;
do {
System.out.println(i);
i++;
H I ©
} while (i < 5);
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 65 / 95


Structures itératives do ... while

Java
Exemple
var i = 0;
do {
System.out.println(i);
i++;
H I ©
} while (i < 5);
U EL
O
f E LM
Le résultat est
ch r e
0 ©A
1
2
3
4

H & H: Research and Training 65 / 95


Structures itératives do ... while

Java

Exercice
H I ©
U EL
O
Écrire un programme qui demande en boucle à l’utilisateur de saisir un

f E LM
entier jusqu’à l’obtention de 0 puis affiche la somme de tous ces
entiers saisis.
ch r e
©A

H & H: Research and Training 66 / 95


Structures itératives for

Java

Boucle for
for (initialisation; condition[s]; incrémentation) {
H I ©
EL
...
}
O U
f E LM
ch r e
©A

H & H: Research and Training 67 / 95


Structures itératives for

Java

Boucle for
for (initialisation; condition[s]; incrémentation) {
H I ©
EL
...
}
O U
f E LM
ch r e
©A
Attention aux boucles infinies si vous modifiez la valeur du compteur à
l’intérieur de la boucle.

H & H: Research and Training 67 / 95


Structures itératives for

Java

Exemple
for (var i = 0; i < 5; i++) {
System.out.println(i);
}
H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 68 / 95


Structures itératives for

Java

Exemple
for (var i = 0; i < 5; i++) {
System.out.println(i);
}
H I ©
UEL
O
Le résultat est
f E LM
ch r e
©A
0
1
2
3
4

H & H: Research and Training 68 / 95


Structures itératives for

Java

H I ©
EL
Exercice 1

O U
LM
Écrire un programme qui permet d’afficher les nombres pairs compris
entre 0 et 10.
r e f E
ch
©A

H & H: Research and Training 69 / 95


Structures itératives for

Java

Première solution
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
System.out.println(i);
H I ©
}
UEL
} O
f E LM
ch r e
©A

H & H: Research and Training 70 / 95


Structures itératives for

Java

Première solution
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
System.out.println(i);
H I ©
}
UEL
} O
f E LM
ch r e
Deuxième solution
©A
for (var i = 0; i < 10; i += 2) {
System.out.println(i);
}

H & H: Research and Training 70 / 95


Structures itératives for

Java

Étant donnée la chaı̂ne de caractères suivante


String maChaine = "Une première phrase. Et voici une
deuxième.";
H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 71 / 95


Structures itératives for

Java

Étant donnée la chaı̂ne de caractères suivante


String maChaine = "Une première phrase. Et voici une
deuxième.";
H I ©
UEL
O
f E LM
Exercice 2
ch r e
©A
Écrire un programme qui permet de compter le nombre de mots et de
phrases dans maChaine.

H & H: Research and Training 71 / 95


Structures itératives for

Java

Exercice 3 H I ©
UEL
O
LM
Écrire un programme qui demande à l’utilisateur de saisir deux entiers

r e f E
positifs et qui calcule puis affiche leur plus grand diviseur commun.

ch
©A

H & H: Research and Training 72 / 95


Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 73 / 95


Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser
H I ©
EL
M OU
E L
Déclaration d’un tableau : syntaxe
f
e
chr = new type[taille];
A
type [] nomTableau
©

H & H: Research and Training 73 / 95


Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser
H I ©
EL
M OU
E L
Déclaration d’un tableau : syntaxe
f
e
chr = new type[taille];
A
type [] nomTableau
©
Déclaration d’un tableau d’entier de taille 2 : exemple
int [] tab = new int[2];

H & H: Research and Training 73 / 95


Tableaux Tableaux à une dimension

Java

Affectation de valeurs aux cases de tableau


tab[0] = 5;
tab[1] = 3;

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 74 / 95


Tableaux Tableaux à une dimension

Java

Affectation de valeurs aux cases de tableau


tab[0] = 5;
tab[1] = 3;

H I ©
U EL
O
LM
Ceci déclenche une exception
tab[2] = 10;
r e f E
ch
©A
L’exception
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 74 / 95


Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 75 / 95


Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

On peut faire une déclaration + une initialisation


int [] tab = { 5, 3 };

H I ©
U EL
O
Comme si la taille du tableau a été fixée à deux

f E LM
ch r e
©A

H & H: Research and Training 75 / 95


Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

On peut faire une déclaration + une initialisation


int [] tab = { 5, 3 };

H I ©
U EL
O
Comme si la taille du tableau a été fixée à deux

f E LM
ch r e
Donc, ceci déclenche aussi une exception
tab[2] = 10; ©A
L’exception
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 75 / 95


Tableaux Tableaux à une dimension

Java

En Java, on ne peut afficher le contenu d’un tableau de la manière


suivante
System.out.println(tab);
H I ©
// affiche [I@1c4af82c
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 76 / 95


Tableaux Tableaux à une dimension

Java

En Java, on ne peut afficher le contenu d’un tableau de la manière


suivante
System.out.println(tab);
H I ©
// affiche [I@1c4af82c
U EL
O
f E LM
ch r e
Mais on peut le convertir en String et ensuite l’afficher
©A
System.out.println(Arrays.toString(tab));
// affiche [5, 3]

H & H: Research and Training 76 / 95


Tableaux Tableaux à une dimension

Java

Pour parcourir le tableau


for (int i = 0; i < tab.length; i++){
System.out.println(tab[i]);
H I ©
}
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 77 / 95


Tableaux Tableaux à une dimension

Java

Pour parcourir le tableau


for (int i = 0; i < tab.length; i++){
System.out.println(tab[i]);
H I ©
}
U EL
O
f E LM
ch r e
Où encore la version simplifiée (foreach)
for (int elt : tab){©A
System.out.println(elt);
}

H & H: Research and Training 77 / 95


Tableaux Tableaux à une dimension

Java

Étant donné le tableau suivant

String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat" };

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 78 / 95


Tableaux Tableaux à une dimension

Java

Étant donné le tableau suivant

String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat" };

H I ©
U EL
O
Exercice 1
f E LM
ch r e
©A
Écrire un programme qui permet de calculer le nombre total de caractères de toutes les chaı̂nes
présentes dans le tableau voitures.

H & H: Research and Training 78 / 95


Tableaux Tableaux à une dimension

Java

Étant données les deux variables suivantes

String voiture = "ford";

I
String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat", "
H ©
EL
ford", "fiat", "ford" };

O U
f E LM
ch r e
©A

H & H: Research and Training 79 / 95


Tableaux Tableaux à une dimension

Java

Étant données les deux variables suivantes

String voiture = "ford";

I
String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat", "
H ©
EL
ford", "fiat", "ford" };

O U
f E LM
Exercice 2
ch r e
©A
Écrire un programme qui permet de calculer et afficher le nombre d’occurrence de voiture
dans voitures.

H & H: Research and Training 79 / 95


Tableaux Tableaux à deux dimensions

Java

Déclaration d’un tableau à deux dimensions


type[][] nomTableau = new type[nbLignes][nbColonnes];
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 80 / 95


Tableaux Tableaux à deux dimensions

Java

Déclaration d’un tableau à deux dimensions


type[][] nomTableau = new type[nbLignes][nbColonnes];
H I ©
U EL
O
f E LM
Exemple
r e
c= hnew int[2][2];
A
int[][] tab2dim
©

H & H: Research and Training 80 / 95


Tableaux Tableaux à deux dimensions

Java
Déclaration + initialisation
int[][] tab2dim = new int[][]
{
{1, 2},
{3, 4}
H I ©
};
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 81 / 95


Tableaux Tableaux à deux dimensions

Java
Déclaration + initialisation
int[][] tab2dim = new int[][]
{
{1, 2},
{3, 4}
H I ©
};
U EL
O
f E LM
Ou
ch r e
int[][] tab2dim = ©A
{
{1, 2},
{3, 4}
};

H & H: Research and Training 81 / 95


Tableaux Tableaux à deux dimensions

Java
Parcourir un tableau à deux dimensions
for (int[] ligne : tab2dim) {
for (int elt : ligne) {
System.out.println(elt);
}
H I ©
}
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 82 / 95


Tableaux Tableaux à deux dimensions

Java
Parcourir un tableau à deux dimensions
for (int[] ligne : tab2dim) {
for (int elt : ligne) {
System.out.println(elt);
}
H I ©
}
U EL
O
f E LM
Ou
ch r e
©A
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
System.out.println(tab2dim[i][j]);
}
}

H & H: Research and Training 82 / 95


Tableaux Tableaux à deux dimensions

Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
H I ©
EL
};

O U
f E LM
ch r e
©A

H & H: Research and Training 83 / 95


Tableaux Tableaux à deux dimensions

Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
H I ©
EL
};

O U
f E LM
Exercice
ch r e
©A
Écrire un programme qui

parcourt la matrice précédente,

calcule le nombre d’occurrence de valeur dans chaque ligne de matrice,

stocke le résultat dans un tableau occurrences.

H & H: Research and Training 83 / 95


Tableaux Tableaux à deux dimensions

Java
Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
H I ©
EL
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
O U
LM
{ 8, 5, 6, 5 }
};

r e f E
ch
©A

H & H: Research and Training 84 / 95


Tableaux Tableaux à deux dimensions

Java
Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
H I ©
EL
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
O U
LM
{ 8, 5, 6, 5 }
};

r e f E
ch
©A
Exercice

Écrire un programme qui permet de déterminer si valeur est présente dans chaque
ligne de matrice.

H & H: Research and Training 84 / 95


Tableaux Tableaux à deux dimensions

Java

Exercice
H I ©
Écrire un programme qui calcule
U EL
la somme de deux matrices L carrM
O
ées,
1

r e f E
2

A ch
le produit de deux matrices carrées.
©

H & H: Research and Training 85 / 95


Constantes

Java

Une constante
un élément qui ne peut changer de valeur
H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 86 / 95


Constantes

Java

Une constante
un élément qui ne peut changer de valeur
H I ©
UEL
O
f E LM
Nom de constantes en Java
ch r e
©A
Utiliser que des lettres en majuscules.
Pour les noms composés, utiliser underscore comme séparateur.

H & H: Research and Training 86 / 95


Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 87 / 95


Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

H I ©
UEL
O
LM
Déclaration d’une constante
final double PI = 3.1415;
r e f E
ch
©A

H & H: Research and Training 87 / 95


Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

H I ©
UEL
O
LM
Déclaration d’une constante
final double PI = 3.1415;
r e f E
ch
©A
L’instruction suivante ne peut être acceptée
PI = 5;

H & H: Research and Training 87 / 95


Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 88 / 95


Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

H I ©
Exemple de déclaration d’une méthode
U EL
M O
E L
public static int somme (int a, int b) {
f
}
return a + b;
chr e
© A

H & H: Research and Training 88 / 95


Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

H I ©
Exemple de déclaration d’une méthode
U EL
M O
E L
public static int somme (int a, int b) {
f
}
return a + b;
chr e
© A
Exemple d’appel d’une méthode

System.out.println(somme(2, 3));
// affiche 5

H & H: Research and Training 88 / 95


Méthodes

Java

Exercice

H I ©
Écrire une méthode maximum2(a, b) qui retourne le maximum entre

EL
a et b.

O U
f E LM
ch r e
©A

H & H: Research and Training 89 / 95


Méthodes

Java

Exercice

H I ©
Écrire une méthode maximum2(a, b) qui retourne le maximum entre

EL
a et b.

O U
f E LM
Exercice
ch r e
©A
Écrire une méthode maximum3(a, b, c) qui retourne le maximum
entre a, b et c (vous pouvez utiliser la méthode maximum2) .

H & H: Research and Training 89 / 95


Méthodes

Java

Exercice H I ©
UEL
O
LM
Écrire une méthode qui permet de déterminer si un nombre passé en

r e f E
paramètre est premier. La méthode retourne un booléen.

ch
©A

H & H: Research and Training 90 / 95


Méthodes

Java
Déclaration de méthode avec un nombre indéterminé de paramètres (varargs)
public static int somme(int... tab) {
int res = 0;
for (int elt : tab)
res += elt;
return res;
H I ©
EL
}

O U
f E LM
ch r e
©A

H & H: Research and Training 91 / 95


Méthodes

Java
Déclaration de méthode avec un nombre indéterminé de paramètres (varargs)
public static int somme(int... tab) {
int res = 0;
for (int elt : tab)
res += elt;
return res;
H I ©
EL
}

O U
f E LM
Exemple d’appel
r e
// affiche ©
2 Ach
System.out.println(somme(2));

System.out.println(somme(2, 3));
// affiche 5
System.out.println(somme(2, 3, 5));
// affiche 10
System.out.println(somme(2, 3, 5, 9));
// affiche 19

H & H: Research and Training 91 / 95


Méthodes

Java

Remarques
H I ©
varargs est disponible depuis Java 5
UEL
O
f E LM
On ne peut avoir qu’un seul varargs par méthode

r e
Le paramètre varargs doit être le dernier dans la liste de
ch
©A
paramètres d’une méthode

H & H: Research and Training 92 / 95


Méthodes

Java

Exercice 1
H I ©
UEL
O
Écrire une méthode qui accepte un nombre variable de paramètre de

f E LM
type String et qui retourne la chaı̂ne la plus longue (ayant le plus
grand nombre de caractères).
ch r e
©A

H & H: Research and Training 93 / 95


Méthodes

Java

Exercice 2

Écrire une méthode qui détermine si le premier paramètre est divisible


par tous les autres paramètres. Le nombre de paramètres est variable
et la méthode retourne un booléen.
H I ©
UEL
O
f E LM
Exemple
ch r e
©A
estDivisiblePar(10, 2, 3, 5));
// false

estDivisiblePar(10, 2, 5));
// true

H & H: Research and Training 94 / 95


Méthodes

Java

Remarques
H I ©
U
Comme Java supporte la surcharge de méthodesEL
Pas de paramètres optionnelsL MO
e E
f pour
Pas de valeur parhdréfaut
A c les paramètres
©

H & H: Research and Training 95 / 95

Vous aimerez peut-être aussi