objektorientieres Programmiere < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | a)Erstelle nun eine Methode public void removeAngestellter(String vorname, String nachname). Über diese Methode soll dem Vector teilnehmer ein Angestellter, der den entsprechenden Vornamen und Nachnamen hat, gelöscht werden können.
b)Erstellt nun eine Methode public int getAnzahlTeilnehmer(). Über diese Methode soll die Anzahl der Teilnehmer zurückgegeben werden.
c)Erstellt eine Methode public int getAnzahlTeilnehmerMitVornamen(String vorname). Diese Methode zählt die Anzahl der Teilnehmer in der Gruppe, die einen entsprechenden Vornamen haben.
d)Erstellt eine Methode public String getAlleTeilnehmer() welche die Vornamen aller Teilnehmer als einen String zurückgibt. Die einzelnen Vornamen sollen hierbei durch das Zeichen: „;“ getrennt werden. Zum Beispiel könnte sich als Rückgabe der String „Marco;Zied;Konstantin;Robert;Sylvia“ ergeben.
e) Erstellt eine Methode public boolean istTeilnehmerderGruppe(String vorname, String name). Diese Methode sucht den Angestellten in der Gruppe. Ist der Angestellte in der Gruppe, wird true und ansonsten false zurückgegeben.
gegeben sind folgender code:
[Dateianhang nicht öffentlich] [Dateianhang nicht öffentlich] |
ich bin mir nicht sicher ob ich aufgabe a richtig gelöst habe.
bei aufgabe c) komme ich nicht weiter und brauche tipps
mein ansatz.
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich] Anhang Nr. 2 (Typ: png) [nicht öffentlich] Anhang Nr. 3 (Typ: png) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:49 Mi 26.02.2014 | Autor: | DieAcht |
Hallo,
Zu a):
Ich verstehe nicht was du dort tust. Soweit ich das verstanden
habe sollst du den Angestellten anhand seinem Vor- und Nach-
namen löschen. Das hast du in der Klasse Person gegeben.
Zu b):
Hier brauchst du auf keinen Fall alle durchzugehen. Probier
doch mal die Anzahl direkt anzugeben.
Zu c):
Das macht so keinen Sinn. Fang in einer IF-Abfrage alle
Teilnehmen mit dem Vornamen ab und addiere eine Eins dazu.
Gruß
DieAcht
|
|
|
|
|
ok aufgabe b) habe ich jetzt so gelöst:
public int getAnzahlTeilnehmer()
{
int anzahl = teilnehmer.size();
return anzahl;
}
bei a) ich muss auf die methoden getName und getVorname zugreifen oder? ich bekomme das irgendwqie nicht hin. das program erkennt nicht die methode
public void removeAngestellter(String vorname, String nachname)
{
teilnehmer.removeAngestellter(Person.getVorname(vorname) && Perspn.getName(nachname));
}
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:47 Mi 26.02.2014 | Autor: | DieAcht |
Hallo nochmal,
> ok aufgabe b) habe ich jetzt so gelöst:
>
> public int getAnzahlTeilnehmer()
> {
> int anzahl = teilnehmer.size();
>
> return anzahl;
> }
Direkter:
return teilnehmer.size();
Eine Exception wäre hier natürlich auch sinnvoll, aber das
ist nach der Aufgabenstellung auch nicht notwendig.
> bei a) ich muss auf die methoden getName und getVorname
> zugreifen oder?
Ja.
> ich bekomme das irgendwqie nicht hin. das
> program erkennt nicht die methode
>
> public void removeAngestellter(String vorname, String
> nachname)
> {
>
> teilnehmer.removeAngestellter(Person.getVorname(vorname) &&
> Perspn.getName(nachname));
>
> }
Gib dir bitte mehr Mühe beim Aufschreiben. Das logische UND
macht hier keinen Sinn. Probiere doch mal das ganze nicht
in einer Zeile zu schreiben. Mach dir doch eine main-Methode
und geh ein Beispiel durch, dann solltest du darauf leichter
kommen. Vor Allem lernst du damit auch besser.
Gruß
DieAcht
|
|
|
|
|
ich habe noch eine frage zu a)
meine lösung wäre:
public void removeAngestellter(String vorname, String nachname)
{
for (int i =0; i < teilnehmer.size(); i++){
if (teilnehmer.get(i).getVorname().equals(vorname) && teilnehmer.get(i).getName().equals(nachname)){
teilnehmer.remove(i);
}
}
}
und die offizielle lösung ist:
public void removeAngestellter(String vorname, String nachname){
Vector<Angestellter> zumLoeschen = new Vector<Angestellter>();
for (int i =0; i < teilnehmer.size(); i++){
if (teilnehmer.get(i).getVorname().equals(vorname) && teilnehmer.get(i).getName().equals(nachname)){
zumLoeschen.add(teilnehmer.get(i));
}
}
teilnehmer.removeAll(zumLoeschen);
}
meine frage:
wieso wird bei der offiziellen lösung eine Instanz erstellt mit
Vector<Angestellter> zumLoeschen = new Vector<Angestellter>();
was ist der sinn davon?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:16 Fr 28.02.2014 | Autor: | DieAcht |
Hallo,
Ich bin mir eigentlich ziemlich sicher, dass deine Methode
auch funktioniert, aber es könnte zu Komplikationen kommen.
Vielleicht kommst du selbst auf eine. Vor Allem wenn du dir
überlegst was bei mehreren Schleifen passieren könnte. Fal-
ls du dennoch auf kein Beispiel kommen solltest, dann frag
einfach nochmal hier nach. Bei der Musterlösung kann das so
nicht einfach zu Komplikationen führen, denn wir speichern
unsere Zielmenge (extern) und löschen, ganz am Ende, genau
das was wir brauchen.
Gruß
DieAcht
|
|
|
|