IndexOutOfBoundsException:索引:1,大小:0

时间:2019-07-12 18:12:17

标签: java arraylist indexoutofboundsexception

当我尝试在Java中创建n元树时,出现了IndexOutOfBound异常。

我已经尝试使用children.add(index,element)和children.add(element)方法,但是我仍然遇到相同的问题。

// Node 
import java.util.ArrayList;
import java.util.List;

public class Nodo_m_ario {

    protected Nodo_m_ario parent;
    protected List<Nodo_m_ario> children = new ArrayList<Nodo_m_ario> 
   (maxNrOfChildren);
    protected String info;

    protected static int maxNrOfChildren; 

    public Nodo_m_ario (String info) {
        this.info=info; 
    }

    public Nodo_m_ario() {
    }

    public void addChild(int position, Nodo_m_ario child) {
        child.setParent(this);
        child.add(position,child);  
    }

    public Nodo_m_ario getParent() {
        return parent;
    }

    public void setParent(Nodo_m_ario parent) {
        this.parent = parent;
    }
// N-ary tree
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

public class Albero_m_ario extends Nodo_m_ario {
    private Nodo_m_ario root;
    private int height;

    public Albero_m_ario(int ariety) {
        super();
        Nodo_m_ario.maxNrFigli = ariety;        
    }

    public Nodo_m_ario setRoot(String info) {
        if (root!=null){
            return null;
        }
        root = new Nodo_m_ario(info);
        root.parent = null;
        return root;
    }

    public void addNodeV(Nodo_m_ario u, String info, int i) {
        Nodo_m_ario child = new Nodo_m_ario(info);
        u.addChild(i, child);

    }
    }
//Main
public class Main {
    public static void main(String[] args) {
        Albero_m_ario tree = new Albero_m_ario(10);
        Nodo_m_ario n1 = new Nodo_m_ario("node 1");
        Nodo_m_ario n2 = new Nodo_m_ario("node 2");
        Nodo_m_ario n3 = new Nodo_m_ario("node 3");
        Nodo_m_ario n4 = new Nodo_m_ario("node 4");
        Nodo_m_ario n5 = new Nodo_m_ario("node 5");

        Nodo_m_ario r = tree.setRoot("0");

        tree.addChild(n1);
        tree.addChild(n2);
        tree.addChild(n3);
        tree.addChild(n4);
        tree.addChild(n5);

        tree.addNodeV(r, "node 1", 0);
        tree.addNodeV(n3, "node 3", 1);
        tree.print();


    }
}

我希望输出是我创建的树,但实际结果是

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, 
Size: 0
at java.base/java.util.ArrayList.rangeCheckForAdd(ArrayList.java:787)
at java.base/java.util.ArrayList.add(ArrayList.java:512)
at albero_m_ario.Nodo_m_ario.addChild(Nodo_m_ario.java:28)
at albero_m_ario.Albero_m_ario.addNodeV(Albero_m_ario.java:32)
at albero_m_ario.Main.main(Main.java:21)

0 个答案:

没有答案