Arrays:Javakurs
Theorie
Es kommt oft vor, dass eine Liste von gleichartigen Objekten benötigt wird. Dies wird als "Feld" (array) bezeichnet.
Die Elemente eines Feldes werden per Index angesprochen. Der erste gültige Index ist 0.
Wieviel Elemente ein Feld hat, wird bei der Definition festgelegt. Die Anzahl kann zur Laufzeit nicht geändert werden. Ausweg: neues Feld definieren und umkopieren.
Man kann natürlich auch die Anzahl der Elemente, die ein Feld hat abfragen. Das wird mit <feld>.length erledigt.
Syntax
Definition
<datatype> <name> '[' ']' '=' 'new' <dataType> '[' <count_expr> ']' ';'
Der Anzahl-Ausdruck muss eine Ganzzahl liefern (int).
Zuweisung
<name> '[' <index_expr> ']' '=' <value_expr> ';'
Der Index-Ausdruck muss eine Ganzzahl liefern (int) und zwischen 0 und der Maximalindex (bei der Definition festgelegt), liegen.
Verwendung
<name> '[' <index_expr> ']'
Der Index-Ausdruck muss eine Ganzzahl liefern (int) und zwischen 0 und der Maximalindex (bei der Definition festgelegt), liegen.
Initalisierung mit Konstanten
Sind die Werte eines Arrays bekannt, können sie bei der Definition schon angegeben werden:
int[] numberBases = { 2, 8, 10, 16 }; char[] vovals = { 'a', 'e', 'i', 'o', 'u' };
Beispiel
// Sieb des Eratosthenes: von 1..100 int count = 100; boolean[] sieve = new boolean[count]; int ix; for (ix = 0; ix < count; ix++) sieve[ix] = true; for (int divider = 1; divider*divider < count; divider += 2){ int mult = divider == 1 ? 2 : divider; for (ix = mult*2; ix < count; ix += mult) sieve[ix] = false; } for (ix = 2; ix < count; ix++){ if (sieve[ix]) System.out.print(String.format(" %d", ix)); } System.out.println();
Aufgabe
- Überprüfe für die ersten 90 Fibunacci-Zahlen folgende Aussagen
- genau jede dritte Fibonacci-Zahl ist durch 2 teilbar
- genau jede fünfte Fibonacci-Zahl ist durch 5 teilbar
Hinweis: Fibunacci-Zahlen sind eine Zahlfolge mit den Anfangswerten 1 und 1 und der Formel: Fn = Fn-2 + Fn-1. Also F3 = F1 + F2, F4 = F2 + F3 ...
Beachte: die 90.te Fibunacci-Zahl ist 2.88E18, also gerade noch als long darstellbar (2**63=9E18)