# Freundesliste erstellen



## max514 (27. Aug 2018)

hey leute ich bin relativ neu in Java und muss folgende aufgabe erledigen:
In der Klasse Kartei sollen die Freunde verwaltet werden. Es sollen Methoden zum Hinzufügen, zum Ändern, zum Löschen von Freunde geben. Auch möchte man nach Freunde in der Kartei suchen können (z. B. nach dem Nachnamen oder dem Schlüssel) und die Gesamtanzahl der Freunde, die gespeichert sind, ausgeben können. Berücksichtigen Sie auch mögliche Fehler, die auftreten können und behandeln Sie diese Anwender gerecht.
mein code sieht folgendermaßen aus ;

```
package assignment;
import java.util.ArrayList;


public class Kartei {
  
  
   public ArrayList<Freunde> liste;
  
   public Kartei() {
        liste = new ArrayList<Freunde>();
    }


    public void anlegen(Freunde f) {
        liste.add(f);
    }

    public void anlegen(String vN, String nN, String gD, long tN, long hN,
           String e, long PLZ, String o, String s,int schlüssel) {
        Freunde f = new Freunde(vN, nN, gD, tN, hN, e, PLZ, o, s, schlüssel);
        liste.add(f);
    }
  
    public void löschen (Freunde fe) {
       liste.remove(fe);
    }
  
    public void löschen (String nN, String vN) {
       Freunde fe = null;
        for (Freunde f : liste) {
                   if (f.getnachName().equals(nN) || f.getvorName().equals(vN)) {
                       fe = f;
                       break;
                   }
               }
       if(fe!=null)
       liste.remove(fe);
    }
  
    public void finde (Freunde f) {
       liste.toString();
    }
  
    public String finde(String nN, String vN) {
        for (Freunde f : liste) {
            if (f.getnachName().equals(nN) || f.getvorName().equals(vN)) {
                return f.toString();
            }
        }
        return null;
    }
  
  
}
```
jetzt meine Frage ob der code so wie er bisher ist richtig ist  (also mal so von der Struktur) und wie ich mir die Gesamtanzahl ausgeben kann (durch aufruf im Main natürlich)


----------



## Robat (27. Aug 2018)

Wenn du eine Liste von Freunden hast, dann ist die Gesamtanzahl deiner Freunde die Größe der Liste. Mach dir dafür einfach auch eine entsprechende Methode.

BTW: Code bitte in [code=Java]Your Code[/code]-Tags


----------



## temi (27. Aug 2018)

Ein paar Sachen die mir spontan aufgefallen sind:

Vermeide deutsche Umlaute in Methoden-/Variablennamen
Vermeide kryptische Kürzel in deinen Methodenparametern.
"Freunde" sollte ggf. eher "Freund" bennannt werden. Die dazugehörige Liste ist dann `List<Freund> freunde`.


----------



## max514 (27. Aug 2018)

ok änder ich =)
ich hab jetzt die methode entwickelte aber mir wird gesagt das sie undefiniert ist ??

```
public void gesamtanzahl (Freunde f) {
       liste.gesamtanzahl();
    }
  
    public String gesamtanzahl (String ga) {
       for (Freunde f: liste) {
           gesamtanzahl++;
       }
       return f.gesamtanzahl();
    }
```
ich hab auch irgendwie des gefühl die ist falsch aber iwie steh ich aufm schlauch =)


----------



## Javinner (27. Aug 2018)

temi hat gesagt.:


> Ein paar Sachen die mir spontan aufgefallen sind:
> 
> Vermeide deutsche Umlaute in Methoden-/Variablennamen
> Vermeide kryptische Kürzel in deinen Methodenparametern.
> "Freunde" sollte ggf. eher "Freund" bennannt werden. Die dazugehörige Liste ist dann `List<Freund> freunde`.


Zudem fehlt dir jeweils die Überprüfung beim Hinzufügen so wie beim Entfernen der Freunde aus der Liste, ob dieser bereits vorhanden ist oder nicht.


----------



## Javinner (27. Aug 2018)

max514 hat gesagt.:


> ok änder ich =)
> ich hab jetzt die methode entwickelte aber mir wird gesagt das sie undefiniert ist ??
> public void gesamtanzahl (Freunde f) {
> liste.gesamtanzahl();
> ...


Oder einfach nur `liste.size()`


----------



## max514 (27. Aug 2018)

ok super so simple das ich natürlich nicht drauf komm =D


----------



## temi (27. Aug 2018)

Die einfache Lösung hat die Javinner ja schon geschrieben, aber dennoch der Vollständigkeit halber:

```
public void gesamtanzahl (Freunde f) { // der Parameter wird nicht verwendet und kann auch weggelassen werden
    liste.gesamtanzahl(); // die Methode "gesamtzahl" definiert einen Parameter und du rufst ohne Parameter auf
}
```


```
public String gesamtanzahl (String ga) { // der Stringparameter wird ebenfalls nicht verwendet...
    for (Freunde f: liste) {
        gesamtanzahl++; // hier inkrementierst du die Variable "gesamtzahl"
    }
    return f.gesamtanzahl(); // und hier versuchst du das Ergebnis eines Methodenaufrufs zurückzugeben
}
```


----------



## temi (27. Aug 2018)

max514 hat gesagt.:


> ok super so simple das ich natürlich nicht drauf komm =D


Gerne auch mal in der Java-Dokumentation lesen und sich informieren, welche hilfreichen Methoden von den einzelnen Klassen angeboten werden...


----------



## max514 (28. Aug 2018)

hey leute ich hab schon wieder ein problem =( es heißt das mir für Freunde f = new (auskommentierte stelle) der konstruktor fehlt ?? weiß jemand warum ??


```
package assignment;
import java.util.ArrayList;




public class Kartei {
 
 
   public ArrayList<Freunde> liste;
 
   public Kartei() {
        liste = new ArrayList<Freunde>();
    }


    public void anlegen(Freunde f) {
        liste.add(f);
    }

    public void anlegen(String vorName, String nachName, String geburtsDatum, long telefonNummer, long handyNummer,
           String email, long postleitZahl, String ort, String strasse,int key, int gesamtanzahl) {
        /*Freunde f = new Freunde (vorName, nachName, geburtsDatum, telefonNummer, handyNummer, email, postleitZahl,
               ort, strasse, key, gesamtanzahl);*/
        liste.add(f);
    }
 
    public void aendern () {
     
    }
 
    public void aendern(String vorName, String nachName, String geburtsDatum, long telefonNummer, long handyNummer,
           String email, long postleitZahl, String ort, String strasse,int key, int gesamtanzahl) {
       for (Freunde f : liste) {
           if (f.gethandyNummer()==handyNummer) {
             
           }
       }
    }
 
    public void loeschen (Freunde fe) {
       liste.remove(fe);
    }
 
    public void loeschen (String nachName, String vorName) {
       Freunde fe = null;
        for (Freunde f : liste) {
                   if (f.getnachName().equals(nachName) || f.getvorName().equals(vorName)) {
                       fe = f;
                       break;
                   }
               }
       if(fe!=null)
       liste.remove(fe);
    }
 
    public void finde (Freunde f) {
       liste.toString();
    }
 
    public String finde(String nachName, String vorName) {
        for (Freunde f : liste) {
            if (f.getnachName().equals(nachName) || f.getvorName().equals(vorName)) {
                return f.toString();
            }
        }
        return null;
    }
 
    public void gesamtanzahl (Freunde f) {
       liste.size();
    }
 
    public String gesamtanzahl(String gesamtanzahl) {
       for (Freunde f : liste) { 
       return f.gesamtanzahl();  
       }
       return null;
     
    }
 
 

}
```
// Freunde

```
package assignment;


public class Freunde {
 
   private String vorName;
   private String nachName;
   private String geburtsDatum;
   private long telefonNummer;
   private long handyNummer;
   private String email;
   private long postleitZahl;
   private String ort;
   private String strasse;
   private int key;
   private int gesamtanzahl;
 
public Freunde (String vorName, String nachName, String geburtsDatum, long telefonNummer, long handyNummer,
       String email, long postleitZahl, String ort, String strasse,int key, int gesamtanzahl) {
   this.vorName = vorName;
   this.nachName = nachName;
   this.geburtsDatum = geburtsDatum;
   this.telefonNummer = telefonNummer;
   this.handyNummer = handyNummer;
   this.email = email;
   this.postleitZahl = postleitZahl;
   this.ort = ort;
   this.strasse = strasse;
   this.key = key;
   this.gesamtanzahl = gesamtanzahl;
   }


   public String getvorName(){
        return vorName;
    }

    public String getnachName(){
            return nachName;
    }
 
    public String getgeburtsDatum() {
           return geburtsDatum;
    }
 
    public long gettelefonNummer() {
       return telefonNummer;
    }
 
    public long gethandyNummer() {
       return handyNummer;
    }
 
    public String getemail() {
       return email;
    }
 
    public long getpostleitZahl() {
       return postleitZahl;
    }
 
    public String getort() {
       return ort;
    }
 
    public String getstrasse() {
       return strasse;
    }
 
    public int getgesamtanzahl() {
       return gesamtanzahl;
    }
```


----------



## mihe7 (28. Aug 2018)

Das einzige, das bemängelt wird, ist dass Freunde keine Methode gesamtanzahl() hat. Die Methode Kartei#gesamtanzahl ist auch leicht unsinnig, oder?


----------



## mihe7 (28. Aug 2018)

Und *bitte*: pack den Code halbwegs formatiert in [code=Java]...[/code]


----------



## max514 (28. Aug 2018)

ok ich habs falsch abgespeichert hat sich erledigt =D


----------



## max514 (28. Aug 2018)

ja ich weiß bin ziemlich neu =D


----------

