Kurzusok
/
Java
Java
/
Feladatok
/
Madárfigyelő
Madárfigyelő

Madárfigyelő

Tanulófeladat

Bevezetés

Tömbök

A Java nyelvben a tömbök segítségével több azonos típusú értéket tárolhatsz egyetlen szerkezetben. Más adatszerkezetektől eltérően a tömb mérete a létrehozás után rögzített. Az elemeket index használatával rendelheted a tömbhöz, illetve kérdezhetsz le belőle. A Java tömbök nullától induló indexelést használnak: az első elem indexe 0, a másodiké 1, és így tovább.

Íme a tömb inicializálásának szokásos szintaxisa:

type[] variableName = new type[size];

A type a tömb elemeinek a típusa, ami lehet primitív típus (például int) vagy osztály (például String).

A size az elemek száma, amennyit ez a tömb tárolni fog (ez később nem változtatható meg). A tömb létrehozása után az elemek az alapértelmezett értékükre inicializálódnak (jellemzően 0, false vagy null).

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

A tömböket egy rövidített jelöléssel is definiálhatod, amellyel egyszerre hozhatod létre a tömböt és állíthatod be az értékeit:

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

Mivel a fordító most már meg tudja állapítani, hogy hány eleme lesz a tömbnek, a hossz elhagyható.

A tömb elemeit szögletes zárójeles indexjelöléssel rendelheted hozzá és érheted el:

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

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

Ha a tömb érvényes indexein kívül eső indexet érsz el, az IndexOutOfBoundsException kivételt eredményez.

A tömböket módosíthatod úgy, hogy egy tömbpéldány metódusait vagy tulajdonságait hívod meg, vagy úgy, hogy az Arrays osztályban definiált statikus metódusokat használod (ezeket jellemzően csak generikus kódban használják). A length tulajdonság tartalmazza a tömb hosszát. Így érheted el:

int arrayLength = someArray.length;

A Java emellett egy hasznos segédosztályt is biztosít, a java.util.Arrays osztályt, amely rengeteg hasznos, tömbökkel kapcsolatos metódust tartalmaz (például Arrays.equals).

A Java a többdimenziós tömböket is támogatja, például int[][] arr = new int[3][4];, amelyek nagyon hasznosak lehetnek.

Az, hogy a tömb egyben gyűjtemény is, azt jelenti, hogy az értékek index szerinti elérése mellett egy for-each ciklussal az összes értékén végig is iterálhatsz:

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

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

// => aeiou

Ha nagyobb kontrollt szeretnél afölött, hogy mely értékeken iterálj, használhatsz for ciklust:

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

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

// => aei

Utasítások

Szenvedélyes madárfigyelő vagy, aki nyomon követi, hány madár járt a kertedben az elmúlt hét napban.

Hat részfeladat vár rád, és mindegyik a kertedbe látogató madarak számával foglalkozik.

1. Ellenőrizd a múlt heti számokat

Az összehasonlítás kedvéért mindig magadnál tartod a múlt heti számok másolatát, amelyek ezek voltak: 0, 2, 5, 3, 7, 8 és 4. Valósítsd meg a BirdWatcher.getLastWeek() metódust, amely a múlt heti számokat adja vissza:

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

2. Nézd meg, hány madár járt ma

Valósítsd meg a BirdWatcher.getToday() metódust, amely visszaadja, hány madár járt ma a kertedben. A madárszámok napok szerint rendezettek: az első elem a legrégebbi nap száma, az utolsó pedig a mai napé.

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

3. Növeld a mai nap számát

Valósítsd meg a BirdWatcher.incrementTodaysCount() metódust, amely megnöveli a mai nap számát:

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

4. Ellenőrizd, volt-e olyan nap, amikor egyetlen madár sem járt nálad

Valósítsd meg a BirdWatcher.hasDayWithoutBirds() metódust, amely true értéket ad vissza, ha volt olyan nap, amikor egyetlen madár sem járt a kertben; egyébként false-t ad vissza:

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

5. Számítsd ki a látogató madarak számát az első napokra

Valósítsd meg a BirdWatcher.getCountForFirstDays() metódust, amely visszaadja, hány madár járt a kertedben a hét kezdete óta, de a számolást korlátozd a hét elejétől megadott számú napra.

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

6. Számítsd ki a forgalmas napok számát

Néhány nap zsúfoltabb, mint a többi. Forgalmas nap az, amikor öt vagy több madár járt a kertedben. Valósítsd meg a BirdWatcher.getBusyDays() metódust, amely visszaadja a forgalmas napok számát:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Java Exercism

Készen állsz elkezdeni a(z) Madárfigyelő feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.