# Array befüllen



## Windows10 (2. Mai 2016)

Haben Vererbung gelernt!!
Ich stelle jetzt hier mein Problem bezogen auf Fahrzeuge (Basisklasse) und einer vererbten Klasse (alle anderen vererbten Klassen mache ich dann selber).

Code der Basisklasse:

```
public class Fahrzeug
{
    public String toString()
    {
        return null;
    }
}
```

Code der Klasse Motorrad, einer Unterklasse von Fahrzeug:

```
public class Motorrad extends Motorfahrzeug
{
    public Motorrad(int ps)
    {
        super(ps);
    }

    public String toString()
    {
        StringBuilder p=new StringBuilder();
        p.append(" Das Motorrad hat ");
        p.append(ps);
        p.append(" PS! ");
        String ps=p.toString();
        return ps;
    }
}
```
Der Code zu meinem Problem (das Problem ist die auskommentierte Zeile) :

```
public class Main
{
    public Fahrzeug[] printFahrzeuge(int ps,int anzahlGänge)
    {
        Out.println("Wie groß soll das Array sein?");
        int size=In.readInt();
        Fahrzeug[]fahrzeuge=new Fahrzeug[size];
        for(int i=0;i<fahrzeuge.length;i++)
        {
            Fahrzeug a=new Motorrad(ps);
            Motorrad b=(Motorrad)a;
                        if(a instanceof Motorrad)
            {
                //                 fahrzeuge[i]=a.toString();
            }
        }
        Out.println(fahrzeuge);
        return fahrzeuge;
    }
}
```


----------



## mrBrown (2. Mai 2016)

fahrzeuge ist ein Array von Fahrzeugen, du versuchst dem aber einen String zuzuweisen. Da a (=Motorrad) selbst auch ein Fahrzeug ist, kannst du einfach a nehmen, statt toString drauf anzuwenden.

Den Teil mit b kannst du dir sparen, genauso wie das instaneof an der Stelle.
Sollte a kein Motorrad sein, schlägt bereits der Cast fehl, du kämest also gar nicht zu dem if. Und beim if weißt du schon, dass a Fahrzeug ist, für die Zuweisung ins Array ist nicht relevant, ob a auch Motorrad ist.


----------



## Flown (2. Mai 2016)

Allgemeines: Bitte mach dir doch die Mühe in ganzen deutschen Sätzen zu schreiben und eventuell auch noch eine Fehlerbeschreibung zu liefern.
Am besten ist es:
- Einen treffenden Titel zu wählen
- Eine ordentliche Fehlerbeschreibung zu liefern (Code oder Screenshots und vor allem einen StackTrace!, etc. beifügen)
- Die erhoffte Ausgabe hinzufügen
- Die aktuelle Ausgabe hinzufügen
- Am besten auch noch Beispieldaten mitliefern und dein Programm auf das wesentliche minimieren.


----------



## Windows10 (2. Mai 2016)

mrBrown hat gesagt.:


> fahrzeuge ist ein Array von Fahrzeugen, du versuchst dem aber einen String zuzuweisen. Da a (=Motorrad) selbst auch ein Fahrzeug ist, kannst du einfach a nehmen, statt toString drauf anzuwenden.
> 
> Den Teil mit b kannst du dir sparen, genauso wie das instaneof an der Stelle.
> Sollte a kein Motorrad sein, schlägt bereits der Cast fehl, du kämest also gar nicht zu dem if. Und beim if weißt du schon, dass a Fahrzeug ist, für die Zuweisung ins Array ist nicht relevant, ob a auch Motorrad ist.


Warum gibt es dann bei mir, lauter Zahlen aus? Nur Zahlen, nicht den zu erwarteten Text!!


----------



## mrBrown (2. Mai 2016)

Windows10 hat gesagt.:


> Warum gibt es dann bei mir, lauter Zahlen aus? Nur Zahlen, nicht den zu erwarteten Text!!



Vermutlich, weil #println #toString des Arrays aufruft, was den HashCode des Arrays ausgibt.
Um den Inhalt des Arrays auszugeben, kannst du zb Arrays.toString benutzen


----------

