Nullpointerexception, obwohl ich Array initialisiere?

berserkerdq2

Bekanntes Mitglied
Java:
public abstract class Fahrzeug {
    public static enum Typ {PKW,LKW};

    public Fahrzeug(String hersteller, String modell, int leistung, Typ typ){
        this(typ);
        this.hersteller=hersteller;
        this.modell=modell;
        this.leistung=leistung;
    }

    
    private String hersteller;
    private String modell;
    private int leistung;
    private Typ typ;

    public Fahrzeug(Typ t){
        this.typ = t;
    }
    
    public Typ getTyp(){
        return this.typ;
    }

    public String toString(){
        return typ.toString()+", "+hersteller+ ", "+modell+", "+leistung+" PS";
    }

    // TODO
    
}

Java:
public class PKW extends Fahrzeug{
    private int sitze;
    public PKW(String hersteller, String modell, int leistung,int sitze){
        super(hersteller,modell,leistung,Fahrzeug.Typ.PKW);
        this.sitze=sitze;
    }
    public String toString(){
        return super.toString()+"Sitze: "+sitze;
    }
}

Java:
import java.text.DecimalFormat;
public class LKW extends Fahrzeug{
    private int nutzlast;
    double temp=nutzlast/1000;
    private static final DecimalFormat te=new DecimalFormat (" Nutzlast: #,0 t");
    public LKW (String hersteller, String modell, int leistung, int nutzlast){
        super(hersteller,modell,leistung,Fahrzeug.Typ.LKW);
        this.nutzlast=nutzlast;
    }

    public String toString(){
        return super.toString()+te.format(temp);
    }
}

Java:
public class FahrzeugPool {
    private Fahrzeug[] fahrzeuge;
    private int nextIndx = 0;
    public FahrzeugPool(int a){
        fahrzeuge= new Fahrzeug[a];
    }


    public boolean addFahrzeug(Fahrzeug a){
        if(nextIndx!=fahrzeuge.length-1){
            fahrzeuge[nextIndx]=a;
            nextIndx+=1;
            return true;
        }else{
            return false;
        }
    }

    public String toString(){
        StringBuffer baba= new StringBuffer();
        StringBuffer baba2=new StringBuffer();
        
        for (int i=0; i<fahrzeuge.length;i++){
            switch(fahrzeuge[i].getTyp()){
            case PKW:
                baba.append(fahrzeuge[i].toString());
                break;
            case LKW:
                baba2.append(fahrzeuge[i].toString());
                break;
            }


        }
        baba.append("");
        baba.append(baba2);
        return baba.toString();
    }


    // TODO

}

Java:
public class Aufgabe_3{
    private static FahrzeugPool fPool;
    
    private static final String[][] fahrzeugDaten = {
        {"PKW","Honda",        "Civic",  "105","5"},
        {"LKW","MAN",          "TGX",    "540","25000"},
        {"PKW","Mercedes Benz","C 200",  "180","5"},
        {"LKW","Volvo",        "FH",     "500","22000"},
        {"PKW","VW",           "Golf",   "140","5"},
        {"LKW","Mercedes Benz","Actros", "625","26550"},
        {"PKW","Porsche",      "911",    "400","2"},
        {"PKW","Mercedes Benz","A 180",  "120","5"},
        {"PKW","Audi",         "A1",     "90" ,"4"},
        {"LKW","MAN",          "TGL",    "380","18500"},
        {"PKW","Citroen",      "C4",     "115","5"},
        {"PKW","Fiat",         "Punto",  "70" ,"4"},
        {"PKW","Audi",         "A3",     "140","5"},
        {"LKW","Mercedes Benz","Atego",  "250","10000"},
        {"PKW","Mercedes Benz","E 250",  "280","5"},
        {"PKW","Ford",         "C-Max",  "125","5"},
        {"LKW","Volvo",        "FM",     "400","20000"},
        {"PKW","Opel",         "Astra",  "140","5"},
        {"PKW","Honda",        "Accord", "150","5"}
    };


    public static void initPool(){
        fPool= new FahrzeugPool(fahrzeugDaten.length);
        for (int i=0; i<fahrzeugDaten.length;i++){
            if(fahrzeugDaten[i][0].equals("PKW")){
                PKW baba= new PKW(fahrzeugDaten[i][1],fahrzeugDaten[i][2],Integer.parseInt(fahrzeugDaten[i][3]),Integer.parseInt(fahrzeugDaten[i][4]));
            }else{
                LKW baba= new LKW(fahrzeugDaten[i][1],fahrzeugDaten[i][2],Integer.parseInt(fahrzeugDaten[i][3]),Integer.parseInt(fahrzeugDaten[i][4]));
            }
        }
        
        
        // TODO

    }

    public static void main(String[] args){
        initPool();
        System.out.println(fPool.toString());
    }
}


Der Kompiler sagt der Fehler kommt wegen der Klasse Aufgabe:_3, wegen dem System.out.println() beim Fahrzeugpool sei beim switch, wo ich gettyp mache, eine nullpointerexception, warum? Ich initialisiere doch bei Aufgabe_3 meinen Fahrzeugpool?
 
Beste Antwort
K
Du hast ein Array von Fahrzeugen und erzeugst es so:
fahrzeuge= new Fahrzeug[a];

Danach hast Du ein Array, das nur null Werte enthält.

Dann fügst Du Fahrzeuge nach und nach dazu.

Wenn Du dann zu dem toString() kommst, dann gehst Du das ganze Array durch. Entweder du nimmst als Endeprüfung ein < nextIndx, d.h. die null Werte gehst Du nicht mehr durch oder du prüfst als erstes immer: Ist das aktuelle Element null? Dann geh in der Schleife weiter (continue).
Du hast ein Array von Fahrzeugen und erzeugst es so:
fahrzeuge= new Fahrzeug[a];

Danach hast Du ein Array, das nur null Werte enthält.

Dann fügst Du Fahrzeuge nach und nach dazu.

Wenn Du dann zu dem toString() kommst, dann gehst Du das ganze Array durch. Entweder du nimmst als Endeprüfung ein < nextIndx, d.h. die null Werte gehst Du nicht mehr durch oder du prüfst als erstes immer: Ist das aktuelle Element null? Dann geh in der Schleife weiter (continue).
 
Beste Antwort

Neue Themen


Zurück
Oben