NullPointerException: Cannot read the array length because "this.Kinder" is null

morry329

Mitglied
Hallo zusammen,

ich bearbeite den folgenden Code, um eine kleine "Familie" mithilfe eines Custom-Arrays zu erstellen. Es gibt Eltern Sven und Silke, deren Kinder Tina und Theo sind. Der Code sollte Tina und Theo in der Kinder-Array eintragen in der Sven und Silke als Vater und Mutter identifiziert sind. Beim Ausführen wirft es NullPointerException: Cannot read the array length because "this.Kinder" is null. Vielleicht kann jemand mir eine Hilfestellung geben?

Java:
package Essen2;

import java.util.Arrays;

public class Person {
    String Name;
    Person Vater, Mutter;
    Person[] Kinder;

    void trage_Kind_ein(Person Kind){
        Person[] k = this.Kinder; //zum Kindervariablen zwischenspeichern
        if(this.Kinder == null){
            Kinder = new Person[1];
        } else {
            Kinder = new Person[k.length-1];
        }
        for(int i = 1; i < Kinder.length-1; i++){
            if(Kinder.length > 0){

                Kinder[i] = k[i];
            } else { //bei leere Array
                System.out.println("wie leer");
                break;
            }
        }
        Kinder[Kinder.length-1] = Kind;
    }

    Person(String Name, Person Vater, Person Mutter){
        this.Name = Name;
        this.Vater = Vater;
        this.Mutter = Mutter;

        int i = 0;
        while(i < Kinder.length-1){ //NullPointerException: this.Kinder is null
            if(Kinder.length > 0){
                if(Vater != null){
                    Vater.trage_Kind_ein(this);
                }

                if(Mutter != null){
                    Mutter.trage_Kind_ein(this);
                }
            } else {
                System.out.println("wow how empty");
                break;
            }
        }


    }

    public static void main(String[] args) {
        //Eltern- und Kindervariablen initialisieren
        Person silke = new Person("Silke", null, null);
        Person sven = new Person("Sven", null, null);
        Person tina = new Person("Tina", silke, sven);
        Person theo = new Person("Theo", silke, sven);
        
        //Elternvariablen trägen die Kinder in der Arrays
        silke.trage_Kind_ein(tina);
        sven.trage_Kind_ein(tina);
        silke.trage_Kind_ein(theo);
        sven.trage_Kind_ein(theo);
        
        //Ausgabe
        System.out.println("Silke: Vater = " + silke.Vater + ", Mutter= " + silke.Mutter + ", Kinder=" + Arrays.toString(silke.Kinder));
        System.out.println("Sven: Vater = " + sven.Vater + ", Mutter = " + sven.Mutter + ", Kinder= " + Arrays.toString(sven.Kinder));
        System.out.println("Tina: Vater= " + tina.Vater + ", Mutter = " + tina.Mutter + ", Kinder= " + Arrays.toString(tina.Kinder));
        System.out.println("Theo: Vater= " + theo.Vater + ", Mutter = " + theo.Mutter + ", Kinder = " + Arrays.toString(theo.Kinder));
    }

}
 
Du bist im Konstruktor. Eine Instanzvariable vom Typ eines Arrays ist erst einmal null. Du kannst also nicht auf die Kinder zugreifen. Es macht an der Stelle also keinen Sinn, auf Kinder zuzugreifen.
 

Zurück
Oben