33_ArrayObject_Insert
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Fenster_D.zip | Download |
| CODECode_Student_D.zip | Download |
| CODECode_Worker_E.zip | Download |
PDF-Dokumente
| Dateiname | Aktion |
|---|---|
| PDFFolie_Student_D.pdf | Öffnen |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Fenster_D | Abspielen |
| VIDEOVideo_Student_D | Abspielen |
| VIDEOVideo_Worker_E | Abspielen |
Lernmaterialien
Einfügen
public void einfugen(Student wer, int pos) {
if (wer != null) {
if (wer.getSchool() == null) {
if ((pos >= 0) && (pos <= anzahl)) {
if (anzahl < students.length) {
for (int i = anzahl - 1; i >= pos; i--) {
students[i+1] = students[i];
}
students[pos] = wer;
wer.setSchool(this);
anzahl++;
}
else {
System.out.println("Fehler: kein Platz!");
}
}
else {
System.out.println("Fehler: ungültige Position!");
}
}
else {
System.out.println("Fehler: schon angemeldet!");
}
}
else {
System.out.println("Fehler: kein Student!");
}
}Was die Methode macht
Sie setzt einen Studenten wer an die Stelle
pos im Array students.
Damit dort Platz ist, werden alle bisherigen Elemente ab
pos um eins nach rechts verschoben.
Bedeutung der Parameter
Student wer
- Der Student, der eingefügt werden soll.
int pos
- Die Position, an der eingefügt werden soll.
Beispiel:
pos = 0→ vorne einfügenpos = anzahl→ hinten anhängenpos = 2→ an Index 2 einfügen
if (wer != null)
Prüft, ob überhaupt ein Student übergeben wurde.
wer != null→ es gibt ein Student-Objektsonst Fehlermeldung:
System.out.println(“Fehler: kein Student!”);
if (wer.getSchool() == null)
Prüft, ob der Student noch bei keiner Schule angemeldet ist.
Die Idee:
Hat der Student schon eine Schule, soll er nicht noch einmal eingefügt werden.
nullbedeutet hier: noch keiner Schule zugeordnet.
Wenn er schon eine Schule hat:
System.out.println(“Fehler: schon angemeldet!”);
if ((pos >= 0) && (pos <= anzahl))
Prüft, ob die Position gültig ist.
Gültige Positionen sind:
mindestens
0höchstens
anzahl
Warum pos <= anzahl?
Weil man auch hinten anhängen darf.
Beispiel: Wenn
anzahl = 5, sind die belegten Plätze0bis4.Einfügen bei
5bedeutet: ans Ende setzen.
Ist die Position ungültig:
System.out.println(“Fehler: ungültige Position!”);
if (anzahl < students.length)
Prüft, ob im Array überhaupt noch Platz ist.
anzahl= wie viele Studenten aktuell gespeichert sindstudents.length= maximale Größe des Arrays
Wenn anzahl schon gleich students.length
ist, ist das Array voll.
Dann:
System.out.println(“Fehler: kein Platz!”);
Der wichtigste Teil: Verschieben
for (int i = anzahl - 1; i >= pos; i–) {
students[i+1] = students[i];
}
Hier werden die vorhandenen Studenten von rechts nach links verschoben.
Warum von rechts nach links? Damit keine Werte überschrieben werden.
public Student getStudent(int pos) {
if ((pos >= 0) && (pos < anzahl)) {
return students[pos];
}
else {
return null;
}
}Kurz erklärt:
Es wird geprüft, ob
poseine gültige Position ist.Gültig ist:
pos >= 0pos < anzahl
Wenn die Position gültig ist:
return students[pos];
→ Der Student an dieser Stelle wird zurückgegeben.
Wenn die Position ungültig ist:
return null;
→ Es wird kein Student zurückgegeben.
@Test
public void testEinfugen() {
School htl = new School("HTL");
Student max = new Student("Max", 21, true);
Student susi = new Student("Susi", 19, true);
Student alex = new Student("Alex", 20, true);
Student hans = new Student("Hans", 20, true);
Student felix = new Student("Felix", 20, true);
Student andrea = new Student("Andrea", 20, true);
Student marianne = new Student("Marianne", 20, true);
System.out.println("==================");
System.out.println(htl);
htl.aufnehmen(max);
htl.aufnehmen(susi);
htl.aufnehmen(alex);
htl.aufnehmen(hans);
htl.aufnehmen(felix);
htl.einfugen(andrea, 1);
htl.einfugen(marianne, 0);
assertEquals(marianne, htl.getStudent(0));
assertEquals(max, htl.getStudent(1));
assertEquals(andrea, htl.getStudent(2));
assertEquals(susi, htl.getStudent(3));
assertEquals(alex, htl.getStudent(4));
assertEquals(hans, htl.getStudent(5));
assertEquals(felix, htl.getStudent(6));
}