Tracks
/
Java
Java
/
Übungen
/
Vogelbeobachter
Vogelbeobachter

Vogelbeobachter

Lernübung

Einführung

Arrays

In Java sind Arrays eine Möglichkeit, mehrere Werte desselben Typs in einer einzigen Struktur zu speichern. Anders als andere Datenstrukturen haben Arrays nach dem Erstellen eine feste Größe. Elemente können einem Array über einen Index zugewiesen oder daraus abgerufen werden. Java-Arrays verwenden nullbasierte Indizierung: Der Index des ersten Elements ist 0, der Index des zweiten Elements ist 1, usw.

Hier ist die Standardsyntax zum Initialisieren eines Arrays:

type[] variableName = new type[size];

Der type ist der Typ der Elemente im Array. Er kann ein primitiver Typ (z. B. int) oder eine Klasse (z. B. String) sein.

Die size ist die Anzahl der Elemente, die dieses Array aufnehmen kann (sie lässt sich später nicht mehr ändern). Nach dem Erstellen des Arrays werden die Elemente mit ihren Standardwerten initialisiert (typischerweise 0, false oder null).

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

Arrays können auch mit einer Kurzschreibweise definiert werden, mit der du das Array sowohl erstellst als auch seine Werte festlegst:

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

Da der Compiler nun erkennen kann, wie viele Elemente das Array haben wird, kann die Länge weggelassen werden.

Auf Array-Elemente kann mit einer Indizierung in eckigen Klammern zugegriffen und sie können damit zugewiesen werden:

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

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

Der Zugriff auf einen Index außerhalb der gültigen Indizes des Arrays führt zu einer IndexOutOfBoundsException.

Arrays können bearbeitet werden, indem du entweder die Methoden oder Eigenschaften einer Array-Instanz aufrufst oder die statischen Methoden verwendest, die in der Klasse Arrays definiert sind (typischerweise nur in generischem Code verwendet). Die Eigenschaft length enthält die Länge eines Arrays. Du kannst sie so abrufen:

int arrayLength = someArray.length;

Java bietet außerdem eine hilfreiche Hilfsklasse java.util.Arrays, die viele nützliche Array-bezogene Methoden enthält (z. B. Arrays.equals).

Java unterstützt außerdem mehrdimensionale Arrays wie int[][] arr = new int[3][4];, die sehr nützlich sein können.

Die Tatsache, dass ein Array auch eine Sammlung ist, bedeutet, dass du neben dem Zugriff auf Werte über den Index auch über alle seine Werte mit einer for-each-Schleife iterieren kannst:

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

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

// => aeiou

Wenn du mehr Kontrolle darüber haben möchtest, über welche Werte du iterierst, kannst du eine for-Schleife verwenden:

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

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

// => aei

Anleitung

Du bist ein begeisterter Vogelbeobachter und hältst fest, wie viele Vögel in den letzten sieben Tagen deinen Garten besucht haben.

Du hast sechs Aufgaben, die sich alle mit der Anzahl der Vögel befassen, die deinen Garten besucht haben.

1. Prüfe, wie die Zählungen letzte Woche waren

Zu Vergleichszwecken hast du immer eine Kopie der Zählungen der letzten Woche in der Nähe, und zwar: 0, 2, 5, 3, 7, 8 und 4. Implementiere die Methode BirdWatcher.getLastWeek(), die die Zählungen der letzten Woche zurückgibt:

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

2. Prüfe, wie viele Vögel heute zu Besuch waren

Implementiere die Methode BirdWatcher.getToday(), die zurückgibt, wie viele Vögel heute deinen Garten besucht haben. Die Vogelzählungen sind nach Tagen geordnet, wobei das erste Element die Zählung des ältesten Tages ist und das letzte Element die heutige Zählung.

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

3. Erhöhe die heutige Zählung

Implementiere die Methode BirdWatcher.incrementTodaysCount(), um die heutige Zählung zu erhöhen:

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

4. Prüfe, ob es einen Tag ohne Vögel gab

Implementiere die Methode BirdWatcher.hasDayWithoutBirds(), die true zurückgibt, wenn es einen Tag gab, an dem null Vögel den Garten besucht haben; andernfalls gib false zurück:

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

5. Berechne die Anzahl der Vögel, die in den ersten Tagen zu Besuch waren

Implementiere die Methode BirdWatcher.getCountForFirstDays(), die die Anzahl der Vögel zurückgibt, die deinen Garten seit Beginn der Woche besucht haben, aber begrenze die Zählung auf die angegebene Anzahl von Tagen ab Beginn der Woche.

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

6. Berechne die Anzahl der geschäftigen Tage

Manche Tage sind geschäftiger als andere. Ein geschäftiger Tag ist einer, an dem fünf oder mehr Vögel deinen Garten besucht haben. Implementiere die Methode BirdWatcher.getBusyDays(), um die Anzahl der geschäftigen Tage zurückzugeben:

int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Java Exercism

Bereit, mit Vogelbeobachter zu starten?

Melde dich bei Exercism an, um Java mit 26 Konzepte158 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.