Rutas
/
Java
Java
/
Ejercicios
/
Observador de pájaros
Observador de pájaros

Observador de pájaros

Ejercicio de aprendizaje

Introducción

Arrays

En Java, los arrays son una forma de almacenar varios valores del mismo tipo en una única estructura. A diferencia de otras estructuras de datos, los arrays tienen un tamaño fijo una vez creados. Los elementos se pueden asignar a un array u obtener de él usando un índice. Los arrays de Java usan indexación basada en cero: el índice del primer elemento es 0, el del segundo es 1, etc.

Esta es la sintaxis estándar para inicializar un array:

type[] variableName = new type[size];

El type es el tipo de los elementos del array, que puede ser un tipo primitivo (por ejemplo, int) o una clase (por ejemplo, String).

El size es el número de elementos que contendrá este array (que no se puede cambiar después). Después de crear el array, los elementos se inicializan con sus valores predeterminados (normalmente 0, false o null).

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

Los arrays también se pueden definir usando una notación abreviada que te permite tanto crear el array como establecer su valor:

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

Como el compilador ahora puede saber cuántos elementos tendrá el array, se puede omitir la longitud.

Los elementos del array se pueden asignar y consultar usando una notación de índice entre corchetes:

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

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

Acceder a un índice que está fuera de los índices válidos del array provoca una IndexOutOfBoundsException.

Los arrays se pueden manipular llamando a los métodos o propiedades de una instancia de array, o usando los métodos estáticos definidos en la clase Arrays (normalmente solo se usan en código genérico). La propiedad length contiene la longitud de un array. Se puede acceder a ella así:

int arrayLength = someArray.length;

Java también proporciona una útil clase de utilidad java.util.Arrays que tiene muchos métodos útiles relacionados con arrays (por ejemplo, Arrays.equals).

Java también admite arrays multidimensionales como int[][] arr = new int[3][4];, que pueden ser muy útiles.

El hecho de que un array también sea una colección significa que, además de acceder a los valores por índice, puedes iterar sobre todos sus valores usando un bucle for-each:

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

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

// => aeiou

Si quieres tener más control sobre qué valores iterar, puedes usar un bucle for:

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

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

// => aei

Instrucciones

Eres un gran aficionado a la observación de aves y llevas la cuenta de cuántos pájaros han visitado tu jardín en los últimos siete días.

Tienes seis tareas, todas relacionadas con el número de pájaros que han visitado tu jardín.

1. Comprueba cuáles eran los recuentos la semana pasada

Para poder comparar, siempre tienes cerca una copia de los recuentos de la semana pasada, que eran: 0, 2, 5, 3, 7, 8 y 4. Implementa el método BirdWatcher.getLastWeek(), que devuelve los recuentos de la semana pasada:

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

2. Comprueba cuántos pájaros han visitado hoy

Implementa el método BirdWatcher.getToday() para devolver cuántos pájaros han visitado tu jardín hoy. Los recuentos de pájaros están ordenados por día: el primer elemento es el recuento del día más antiguo y el último es el recuento de hoy.

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

3. Incrementa el recuento de hoy

Implementa el método BirdWatcher.incrementTodaysCount() para incrementar el recuento de hoy:

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

4. Comprueba si hubo un día sin pájaros visitantes

Implementa el método BirdWatcher.hasDayWithoutBirds(), que devuelve true si hubo un día en el que ningún pájaro visitó el jardín; en caso contrario, devuelve false:

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

5. Calcula el número de pájaros que han visitado durante los primeros días

Implementa el método BirdWatcher.getCountForFirstDays(), que devuelve el número de pájaros que han visitado tu jardín desde el comienzo de la semana, pero limita el recuento al número de días especificado desde el principio de la semana.

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

6. Calcula el número de días ajetreados

Algunos días son más ajetreados que otros. Un día ajetreado es aquel en el que cinco o más pájaros han visitado tu jardín. Implementa el método BirdWatcher.getBusyDays() para devolver el número de días ajetreados:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Java Exercism

¿Listo para empezar Observador de pájaros?

Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.