NullPointerException im Array

Detlef7able

Aktives Mitglied
Guten Tag,

ich möchte Verwandtschaftsbeziehungen darstellen bzw. später einen Baum. Habe nun etwas getestet ob es funktioniert und sitze nun schon längerer Zeit vor einer Fehlerausgabe welche ich nicht lösen kann.

Der Fehler taucht in dieser Zeile auf:
Java:
 hauptebenen[1][i].einfügen(hauptebenen[1], hauptebenen[2],anzparentnode[i]);

Vielleicht habe ich etwas mit dem 2D - Array durcheinandergebracht. Wenn ich schreiben würde
Java:
hauptebenen[1]=new node [10];
hätte dann dieses Array Platz für 10 Elemente oder nicht?

Java:
package algorithmen;

import java.util.Arrays;

class Node {
    private String data;
    private Node[] children = new Node[0];
    private Node parent = null;

    public Node(String data) {
        this(data, null);
    }

    public Node(String data, Node child) {
        this.data = data;
        if (child != null) {
            this.addChild(child);
        }
    }

    public void addChild(Node node) {
        node.setParent(this);
        
        Node[] newChildren = copyArrayWithOneExtra(children);
        newChildren[newChildren.length - 1] = node;

        this.children = newChildren;
    }

    public void printChildren() {
        Node[] children = getChildren();

        Arrays.stream(children)
                .forEach(Node::printNode);
    }

    public void printNode() {
        int ancestorCount = this.getAncestorCount();
        while (ancestorCount > 0) {
            System.out.print("\t");
            ancestorCount--;
        }
        System.out.println(this.getData());
    }

    public void printNextGeneration() {
        Arrays.stream(children)
                .peek(Node::printChildren)
                .forEach(Node::printNextGeneration);
    }

    public static int zufall()
    {
        int Max=5;
        int Min=2;
        int x = Min + (int)(Math.random() * ((Max - Min) + 1));
        
        return x;
    }
    
    public void einfügen(Node []elter,Node[] kind,int anzkinder)
    {
        //System.out.println("Anzahl Knoten"+elter.length);
        String[] zahlen= {"eins","zwei","drei","vier","fünf"};
      
       int zaehler=0;
            
        for(int k=0;k<anzkinder;k++) {
            kind [k]=new Node(zahlen[k]);
            elter[0].addChild(kind[k]);
        System.out.println("Anzahl Kinderknoten"+ anzkinder);// Ermittlung der Anzahl der Kinderknoten
        zaehler++;
        }
        System.out.println(zaehler+"abgeschlossen");
        }
        
    
    public static int[] getzufall(int laenge)
    {
        int anzahl=laenge;
        int[] anzkinder =new int [anzahl];
        for(int i=0;i<anzahl;i++)
            anzkinder[i]=zufall();
        
        return anzkinder;
    }
    
    public static int [] kopierarray(int[] a)
    {
        int summe=0;
        for(int i=0;i<a.length;i++)
            summe+=a[i];
        int neu[]=new int [summe];
        return neu;
        
    }
    public static int summearray(int []a)
    {
        int summe=0;
        for(int i=0;i<a.length;i++)
            summe+=a[i];
        return summe;
    }
 
    public static void main(String[] args) {
        
        int tiefe=5;
        
        Node [][]hauptebenen= new Node[tiefe][];
        
        System.out.println("Die Tiefe beträgt:"+" "+tiefe);
        
        Node[] root = new Node[1];
        root[0]=new Node("1");
      
        int[] anzparentnode=new int [1];
      
      
        anzparentnode=getzufall(root.length);
        hauptebenen[0]=new Node[summearray(anzparentnode)];
        System.out.println(anzparentnode[0]);
        root[0].einfügen(root, hauptebenen[0],anzparentnode[0]);
        anzparentnode=kopierarray(anzparentnode);
        
        anzparentnode=getzufall(anzparentnode.length);
        hauptebenen[1]=new Node[summearray(anzparentnode)];
        for(int i=0;i<anzparentnode.length;i++)
        hauptebenen[0][i].einfügen(hauptebenen[0], hauptebenen[1],anzparentnode[i]);
        anzparentnode=kopierarray(anzparentnode);
        
        anzparentnode=getzufall(anzparentnode.length); 
        hauptebenen[2]=new Node[summearray(anzparentnode)];
        for(int i=0;i<anzparentnode.length;i++)
        hauptebenen[1][i].einfügen(hauptebenen[1], hauptebenen[2],anzparentnode[i]);
        
        
        root[0].printChildren();
        System.out.println(root.length);
        hauptebenen[0][0].printChildren();
        System.out.println(hauptebenen[0].length);
        hauptebenen[1][0].printChildren();
        System.out.println(hauptebenen[1].length);
        
    }

    private String getData() {
        return this.data;
    }

    private Node[] getChildren() {
        return this.children;
    }

    private int getChildCount() {
        return children.length;
    }

    private void setParent(Node parent) {
        this.parent = parent;
    }

    private Node getParent() {
        return parent;
    }

    private int getAncestorCount() {
        Node parent = getParent();
        int ancestorCount = 0;
        while (parent != null) {
            ancestorCount++;
            parent = parent.getParent();
        }

        return ancestorCount;
    }

    private static Node[] copyArrayWithOneExtra(Node[] children) {
        Node[] newChildren = new Node[children.length + 1];
        System.arraycopy(children, 0, newChildren, 0, children.length);

        return newChildren;
    }
}

Ich hoffe es kann mir jemand helfen!
Danke im Voraus!
 
K

kneitzel

Gast
Also bei Deinem Code blicke ich nicht auf Anhieb durch. Du kannst da den Code etwas mehr mit Ausgaben spicken, also z.B. die eine Stelle so anpassen:
Java:
        for(int i=0;i<anzparentnode.length;i++) {
          System.out.println("i: " + i + "; hauptebenen[1][i]: " + hauptebenen[1][i]);
          hauptebenen[1][i].einfügen(hauptebenen[1], hauptebenen[2],anzparentnode[i]);
        }

Und dann siehst Du, dass bei i=5 eben hauptebenen[1][5] null ist und daher der Aufruf von einfügen fehlschlägt.

Dann solltest Du bitte auch Umlaute nicht in Bezeichnern verwenden.

Generell ist mir das alles sehr unübersichtlich und ich habe absolut keine Ahnung, was Du da überhaupt machst! In Obfuskation (also Code unleserlich machen) würde ich Dir eine 1 geben!

kopierarray kopiert kein Array sondern erstellt ein neues Array mit der Größe der summe aller Felder aus dem original Array? Warum denn dann doppelten Code? Dann nutz doch summearray in kopierarray so das wirklich das ist, was Du machen wolltest...

Also generell würde ich Dir empfehlen, bei wirklich jedem Schritt einmal zu schauen, ob der wirklich das gemacht hat, was Du erwartet hast. Also entweder wie oben angedeutet durch mehr Ausgaben oder nutz den Debugger.
 

Detlef7able

Aktives Mitglied
Danke! Habe den Fehler gefunden.
Statt
Java:
hauptebenen[1][i].einfügen(hauptebenen[1], hauptebenen[2],anzparentnode[i]);
Hätte ich
Java:
hauptebenen[1][0].einfügen(hauptebenen[1], hauptebenen[2],anzparentnode[i]);
schreiben sollen da ich die Kinderknoten alle an das erste Element hänge.
 

mihe7

Top Contributor
ich möchte Verwandtschaftsbeziehungen darstellen bzw. später einen Baum.
Verwandtschaftsbeziehungen und Baum... das ist ja so eine Sache... :p

Nennen wir es mal einen Graphen, G=(V,E) mit der Knotenmenge V und der Kantenmenge E. Die Knotenmenge ist einfach, das sind die Personen. Die Kanten stellen dann die Verwandtschaftsbeziehungen zwischen den Personen dar. Es gibt verschiedene Arten von Beziehungen. Im Stammbaum ist vor allem die Abstammung interessant, wobei neben der biologischen auch die rechtliche Stellung eine Rolle spielen kann (Adoption). Meist werden auch die Ehen dargestellt. Daraus dürften sich dann alle weiteren Beziehungen ableiten lassen. Bei dem Graphen wird es sich also um einen gerichteten Graphen handeln.
 

LimDul

Top Contributor
Sinnvoll wäre es, anstelle von Arrys komplett auf eigene Datenstrukturen (und ggf. die Collections-API wie List, ArrayList und Co) zu setzen, als zwangshaft alles in Arrays zu speichern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
berserkerdq2 Nullpointerexception, obwohl ich Array initialisiere? Java Basics - Anfänger-Themen 1
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
F NullpointerException bei zweidimensionalem Array Java Basics - Anfänger-Themen 2
Z OOP - Array ständig NullPointerException Java Basics - Anfänger-Themen 4
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
J Char-Array - NullPointerException Java Basics - Anfänger-Themen 3
S Array wird nicht übernommen NullPointerException Java Basics - Anfänger-Themen 6
F Array Ausgabe NullPointerException Java Basics - Anfänger-Themen 14
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
S NullPointerException bei zweidimensionalem JLabel-Array Java Basics - Anfänger-Themen 4
A NullPointerException bei Übergabe eines Array Java Basics - Anfänger-Themen 8
L Array Problem NullPointerException Java Basics - Anfänger-Themen 3
S NullPointerException beim Checkbox-Label-Array mit nextLine() Java Basics - Anfänger-Themen 6
K java.lang.NullPointerException in Array bei Arraylistübergabe Java Basics - Anfänger-Themen 7
7 Array speichert Werte nicht? NullPointerException Java Basics - Anfänger-Themen 2
L NullPointerException bei Array Java Basics - Anfänger-Themen 8
T NullPointerException bei Zugriff auf array Java Basics - Anfänger-Themen 3
T NullPointerException Array Java Basics - Anfänger-Themen 2
S Nullpointerexception bei Array mit selbstgebautem typ Java Basics - Anfänger-Themen 3
S NullPointerException bei Array-Übergabe Java Basics - Anfänger-Themen 3
K Array-Problem mit NullPointerException Java Basics - Anfänger-Themen 8
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
C Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 10
LePetitChat1 Arrays - NullPointerException? Java Basics - Anfänger-Themen 14
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception Java Basics - Anfänger-Themen 7
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
H Java NullPointerException Java Basics - Anfänger-Themen 4
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
L Threads Komischer NullPointerException Java Basics - Anfänger-Themen 2
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
Avalon NullPointerException beim Mocken Java Basics - Anfänger-Themen 6
D NullPointerException in foreach loop Java Basics - Anfänger-Themen 1
D java.lang.NullPointerException Java Basics - Anfänger-Themen 19
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
X java.lang.NullPointerException fehler ? Java Basics - Anfänger-Themen 1
B java.lang.NullPointerException bei javafx Java Basics - Anfänger-Themen 10
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
V NullPointerException Java Basics - Anfänger-Themen 2
S NullPointerException während ResultSet Java Basics - Anfänger-Themen 7
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
scratchy1 NullPointerException Java Basics - Anfänger-Themen 19
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
F Wie kann ich diese NullPointerException umgehen?! Java Basics - Anfänger-Themen 41
dapzoo Compiler-Fehler Beim Werte verteilen in Objektarray NullPointerException Java Basics - Anfänger-Themen 4
W Optional<T> - NullPointerException Java Basics - Anfänger-Themen 37
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
L Variablen NullPointerException bei Dateigröße (Nr.1) Java Basics - Anfänger-Themen 4
M Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 13
D NullPointerException umgehen Java Basics - Anfänger-Themen 17
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
W ArrayList NullPointerException Java Basics - Anfänger-Themen 4
A NullPointerException Java Basics - Anfänger-Themen 6
S NullPointerException Java Basics - Anfänger-Themen 4
T OOP Wörterbuch NullPointerException Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
O NullPointerException Java Basics - Anfänger-Themen 2
M Interpreter-Fehler Feld NullPointerException Java Basics - Anfänger-Themen 4
L Variablen Unerklärliche NullPointerException Java Basics - Anfänger-Themen 2
E Compiler-Fehler nullPointerException in verschachteltem Modell Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert Threads NullPointerException Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
kodela NullPointerException Java Basics - Anfänger-Themen 12
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
H java.lang.NullPointerException Java Basics - Anfänger-Themen 4
H NullPointerException obwohl Objekt angelegt wurde Java Basics - Anfänger-Themen 1
A Threads Reentrantlock | NullpointerException möglicher Deadlock? Java Basics - Anfänger-Themen 0
K Compiler-Fehler NullPointerException lösen Java Basics - Anfänger-Themen 16
G java.lang.NullPointerException Java Basics - Anfänger-Themen 3
P Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 1
E Compiler-Fehler java.lang.NullPointerException Java Basics - Anfänger-Themen 2
S Methoden Methode funktioniert nicht | NullPointerException Java Basics - Anfänger-Themen 6
J Verstehe die NullPointerException nicht Java Basics - Anfänger-Themen 1
T Nullpointerexception und es wird nichts angezeigt Java Basics - Anfänger-Themen 15
H NullPointerException, aber wieso? Java Basics - Anfänger-Themen 5
B ProcessMessage NullPointerException Java Basics - Anfänger-Themen 11
shiroX Compiler-Fehler NullPointerException Java Basics - Anfänger-Themen 9
MrSnake ItemListener mit NullPointerException Java Basics - Anfänger-Themen 3
J java.lang.NullPointerException in meiner JavaFXControllerKlasse Java Basics - Anfänger-Themen 26
M NullPointerException Java Basics - Anfänger-Themen 8
B Vererbung NullPointerException Java Basics - Anfänger-Themen 38
D Communications link failure | java.lang.NullPointerException Java Basics - Anfänger-Themen 3
G NullPointerException Java Basics - Anfänger-Themen 1
J NullpointerException Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Nullpointerexception trotz Ordentlicher Initialisierung Java Basics - Anfänger-Themen 4
F java.lang.NullPointerException, kann aber nicht sein! Java Basics - Anfänger-Themen 4
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
D Java Fehler: NullPointerException Java Basics - Anfänger-Themen 1
X Problem mit NullPointerException Java Basics - Anfänger-Themen 2
K NullPointerException in der Hashtable Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Hilfestellung bei einer NullPointerException Java Basics - Anfänger-Themen 1
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
L NullPointerException Java Basics - Anfänger-Themen 11
M Nullpointerexception??? Java Basics - Anfänger-Themen 2
W NullPointerException bei DefaultListModel Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben