Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.
start:info:11if:09_arrays 01.02.2009 22:30 | start:info:11if:09_arrays 11.06.2015 12:22 aktuell | ||
---|---|---|---|
Zeile 33: | Zeile 33: | ||
- Ein Array ist ein Verweis auf eine Abfolge fester Länge von Variablen des gleichen Typs, genannt Fächer (engl. slots). | - Ein Array ist ein Verweis auf eine Abfolge fester Länge von Variablen des gleichen Typs, genannt Fächer (engl. slots). | ||
- Der Typ ''typ[]'' ist der Typ der Arrays mit Einträgen vom Typ ''typ''. | - Der Typ ''typ[]'' ist der Typ der Arrays mit Einträgen vom Typ ''typ''. | ||
- | - Der Ausdruck ''new typ[n]'' liefert ein frisches Array vom Typ ''typ'' der Länge ''%%n%%'' zurück. Hier ist ''%%n%%'' ein Ausdruck vom Typ ''%%int%%''. | + | - Der Ausdruck ''new typ[n]'' liefert ein frisches Array vom Typ ''typ'' der Länge ''%%n%%'' zurück. Hier ist ''%%n%%'' ein Ausdruck vom Typ ''%%double%%''. |
Im Beispiel ist also ''data'' eine Arrayvariable, die ein frisches Array vom Typ ''double'' der Länge 10 enthält. | Im Beispiel ist also ''data'' eine Arrayvariable, die ein frisches Array vom Typ ''double'' der Länge 10 enthält. | ||
Zeile 96: | Zeile 96: | ||
- Die Fächer eines Arrays werden durch Anfügen des in eckige Klammern gesetzten Index bezeichnet. | - Die Fächer eines Arrays werden durch Anfügen des in eckige Klammern gesetzten Index bezeichnet. | ||
- Ein auf diese Weise bezeichnetes Fach ist eine Variable. Man kann ihren Wert verwenden und ihr mit ''='' einen neuen Wert zuweisen. | - Ein auf diese Weise bezeichnetes Fach ist eine Variable. Man kann ihren Wert verwenden und ihr mit ''='' einen neuen Wert zuweisen. | ||
- | - Arrayindizes beginnen immer bei 0. | + | - Arrayindizes beginnen immer bei 0 (wie bei String). |
- Die Länge eines Arrays erhält man mit ''.length'' | - Die Länge eines Arrays erhält man mit ''.length'' | ||
Zeile 189: | Zeile 189: | ||
====== Finden eines Wertes ====== | ====== Finden eines Wertes ====== | ||
- | Man möchte wissen, ob eins der eingelesenen Preise ''<= 1000'' ist: | + | Man möchte wissen, ob einer der eingelesenen Preise ''≤ 1000'' ist: |
<code java> | <code java> | ||
Zeile 198: | Zeile 198: | ||
</code> | </code> | ||
- | jetzt ist gefunden ''true'' genau dann, wenn ''data'' einen Eintrag ''<= 1000'' hat. Man möchte nun auch noch wissen, wie viele Preise ''<= 1000'' sind: | + | jetzt ist gefunden ''true'' genau dann, wenn ''data'' einen Eintrag ''≤ 1000'' hat. Man möchte nun auch noch wissen, wie viele Preise ''≤ 1000'' sind: |
<code java> | <code java> | ||
Zeile 207: | Zeile 207: | ||
</code> | </code> | ||
- | Jetzt ist ''count'' gleich der Anzahl derjenigen Preise, die ''<= 1000'' sind. | + | Jetzt ist ''count'' gleich der Anzahl derjenigen Preise, die ''≤ 1000'' sind. |
====== Löschen eines Wertes ====== | ====== Löschen eines Wertes ====== | ||
Zeile 216: | Zeile 216: | ||
<code java> | <code java> | ||
- | data[pos] = data[dataSize-1]; | + | // Definition für die intern benutzte Länge: |
- | dataSize = dataSize - 1; | + | dataSize = data.length; |
+ | |||
+ | // Das zu löschende Element an der Stelle pos | ||
+ | // mit dem letzten Element überschreiben | ||
+ | data[pos] = data[dataSize-1]; | ||
+ | |||
+ | // die intern verwendete Längenangabe reduzieren | ||
+ | dataSize = dataSize - 1; | ||
+ | |||
+ | // Achtung: data.length hat sich nicht verändert! | ||
</code> | </code> | ||
Zeile 223: | Zeile 232: | ||
<code java> | <code java> | ||
- | for(int i = 0; i < dataSize - 1; i++) | + | // Elemente bis zur Position aufschieben |
+ | for(int i = pos; i < dataSize - 1; i++) | ||
data[i] = data[i+1]; | data[i] = data[i+1]; | ||
+ | // die intern verwendete Längenangabe reduzieren | ||
dataSize = dataSize - 1; | dataSize = dataSize - 1; | ||
</code> | </code> | ||
Zeile 287: | Zeile 298: | ||
- Konstruiere ein 2D-Array von Booleans, das schachbrettartig vorbesetzt ist. | - Konstruiere ein 2D-Array von Booleans, das schachbrettartig vorbesetzt ist. | ||
- Schreibe eine Methode, die überprüft, ob zwei Arrays dieselben Elemente in derselben Reihenfolge enthalten. | - Schreibe eine Methode, die überprüft, ob zwei Arrays dieselben Elemente in derselben Reihenfolge enthalten. | ||
- | - Felder.java: | + | - Lade folgende Datei herunter und benenne Sie in "Felder.java" um: {{:start:info:11if:felder.txt|felder.txt}} |
- Öffne BlueJ. | - Öffne BlueJ. | ||
- Schließe evtl. bereits geöffnete Projekte. | - Schließe evtl. bereits geöffnete Projekte. | ||
- | - Erstelle ein neues Projekt "Felder" (oder übernimm obiges Projekt). | + | - Erstelle ein neues Projekt "Felder". |
- | - Erstelle darin eine Klasse "Felder" (oder übernimm obiges Klasse). | + | - Erstelle darin eine Klasse "Felder". |
- Kopiere den Inhalt der oben angegebenen Klasse an Stelle der automatisch generierten Codezeilen in deiner soeben erstellten Klasse und speichere ab. | - Kopiere den Inhalt der oben angegebenen Klasse an Stelle der automatisch generierten Codezeilen in deiner soeben erstellten Klasse und speichere ab. | ||
- Fang an die Arbeitsaufträge abzuarbeiten (Methoden implementieren und kommentieren). Und ab geht's! :-) | - Fang an die Arbeitsaufträge abzuarbeiten (Methoden implementieren und kommentieren). Und ab geht's! :-) | ||