# Klassen und Methoden



## Windows10 (29. Mrz 2016)

Was ist bei folgendem Methodenaufruf falsch?

Die Methode (kein Fehler):

```
public String formatDate()
    {
        String punkt =". ";
        String[]monthNames={"Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"};
        StringBuilder ausgabe=new StringBuilder();
        ausgabe.append(day);
        ausgabe.append(punkt);
        ausgabe.append(monthNames[month-1]);
        ausgabe.append(punkt);
        ausgabe.append(year);
        String formateDate=ausgabe.toString();
        return formateDate;
    }
```


Der Aufruf (der Fehler):

```
public void addDays(int days)
    {
        String formatDate;
        //         String datum=formatDate;
    }
```
Irgendwie gibt es bei der Methode addDays() immer den Fehler aus, dass formatDate nicht initialisiert wurde!! Warum? Wo genau liegt der Fehler?


----------



## kneitzel (29. Mrz 2016)

Also im ersten Codenblock zeigst Du eine Funktion (Methode) formatDate.

Nun erstellst Du im zweiten Block eine Funktion addDays, in der Du die lokale Variable formatDate erstellst und diese nicht initialisierst.
Dann versuchst Du, diese lokale Variable der neuen lokalen Variable datum zuzuweisen. Das wird angemeckert, denn die lokale Variable ist ja noch nicht initialisiert.

Wenn Du die Funktion aus erstem Block aufrufen willst, dann musst Du () dahinter setzen. Desweiteren ist es extrem unschön, einen Bezeichner mehrfach zu nutzen. Also eine lokale Variable formatDate und eine Funktion formatDate sind schon etwas unschön. Eine locale Variable formatiert ja auch kein Datum sondern enthält ein formatiertes Datum. Also wäre da der Name formatedDate sinnvoller.


----------

