Parcours
/
Java
Java
/
Exercices
/
Observateur d'oiseaux
Observateur d'oiseaux

Observateur d'oiseaux

Exercice d'apprentissage

Introduction

Tableaux

En Java, les tableaux permettent de stocker plusieurs valeurs du même type dans une seule structure. Contrairement à d'autres structures de données, un tableau a une taille fixe une fois créé. On peut affecter des éléments à un tableau ou les récupérer à l'aide d'un indice. Les tableaux Java utilisent une indexation à partir de zéro : l'indice du premier élément est 0, celui du deuxième élément est 1, etc.

Voici la syntaxe standard pour initialiser un tableau :

type[] variableName = new type[size];

Le type est le type des éléments du tableau, qui peut être un type primitif (par exemple int) ou une classe (par exemple String).

La size est le nombre d'éléments que ce tableau contiendra (ce nombre ne pourra pas être modifié par la suite). Après la création du tableau, les éléments sont initialisés à leurs valeurs par défaut (généralement 0, false ou null).

// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];

On peut aussi définir un tableau à l'aide d'une notation abrégée qui permet à la fois de créer le tableau et de définir ses valeurs :

// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };

Comme le compilateur peut désormais déterminer le nombre d'éléments que contiendra le tableau, la longueur peut être omise.

On peut affecter et accéder aux éléments d'un tableau à l'aide d'une notation à crochets avec indice :

// Assign second element by index
twoInts[1] = 8;

// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];

Accéder à un indice en dehors des indices valides du tableau provoque une IndexOutOfBoundsException.

On peut manipuler un tableau en appelant les méthodes ou les propriétés de l'instance du tableau, ou en utilisant les méthodes statiques définies dans la classe Arrays (généralement utilisées uniquement dans du code générique). La propriété length contient la longueur d'un tableau. On peut y accéder comme ceci :

int arrayLength = someArray.length;

Java fournit également une classe utilitaire pratique java.util.Arrays qui propose de nombreuses méthodes utiles liées aux tableaux (par exemple Arrays.equals).

Java prend également en charge les tableaux multidimensionnels comme int[][] arr = new int[3][4];, ce qui peut être très utile.

Le fait qu'un tableau soit aussi une collection signifie qu'en plus d'accéder aux valeurs par indice, on peut parcourir toutes ses valeurs à l'aide d'une boucle for-each :

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for(char vowel: vowels) {
    // Output the vowel
    System.out.print(vowel);
}

// => aeiou

Si tu veux plus de contrôle sur les valeurs à parcourir, tu peux utiliser une boucle for :

char[] vowels = { 'a', 'e', 'i', 'o', 'u' };

for (int i = 0; i < 3; i++) {
    // Output the vowel
    System.out.print(vowels[i]);
}

// => aei

Instructions

Tu es un observateur d'oiseaux passionné et tu notes combien d'oiseaux sont venus dans ton jardin au cours des sept derniers jours.

Tu as six tâches, qui portent toutes sur le nombre d'oiseaux venus dans ton jardin.

1. Vérifie quels étaient les comptages de la semaine dernière

Pour pouvoir comparer, tu gardes toujours près de toi une copie des comptages de la semaine dernière, à savoir : 0, 2, 5, 3, 7, 8 et 4. Implémente la méthode BirdWatcher.getLastWeek() qui renvoie les comptages de la semaine dernière :

BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]

2. Vérifie combien d'oiseaux sont venus aujourd'hui

Implémente la méthode BirdWatcher.getToday() pour renvoyer le nombre d'oiseaux qui sont venus dans ton jardin aujourd'hui. Les comptages d'oiseaux sont ordonnés par jour : le premier élément correspond au comptage du jour le plus ancien et le dernier au comptage d'aujourd'hui.

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1

3. Incrémente le comptage d'aujourd'hui

Implémente la méthode BirdWatcher.incrementTodaysCount() pour incrémenter le comptage d'aujourd'hui :

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2

4. Vérifie s'il y a eu un jour sans aucun oiseau

Implémente la méthode BirdWatcher.hasDayWithoutBirds() qui renvoie true si un jour aucun oiseau n'est venu dans le jardin, et false dans le cas contraire :

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true

5. Calcule le nombre d'oiseaux venus les premiers jours

Implémente la méthode BirdWatcher.getCountForFirstDays() qui renvoie le nombre d'oiseaux venus dans ton jardin depuis le début de la semaine, en limitant le comptage au nombre de jours indiqué depuis le début de la semaine.

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14

6. Calcule le nombre de jours chargés

Certains jours sont plus chargés que d'autres. Un jour chargé est un jour où cinq oiseaux ou plus sont venus dans ton jardin. Implémente la méthode BirdWatcher.getBusyDays() pour renvoyer le nombre de jours chargés :

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Java Exercism

Prêt à commencer Observateur d'oiseaux ?

Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.