将ArrayList添加到ArrayLists的ArrayList时遇到问题

时间:2013-05-21 17:17:33

标签: java eclipse debugging arraylist

public class Tabel {
    private static int dimension;

    private ArrayList<ArrayList<Character>> tabel;


    public Tabel(int dimension) {

        Tabel.dimension = dimension;

        for (int i=0;i<Tabel.dimension*Tabel.dimension;i++) {
           tabel.add(new ArrayList<Character>());
        }

     }
}

当我尝试调试(eclipse ide)时,我会遇到很多奇怪的“错误”,或者至少我遇到了一些我认为意想不到的错误。

private static int没有出现在debug的“variables”部分。

我在NullPointerException上获得tabel.add(...)但是当我看到调试时,它会进入for一次,不会在表格中添加任何内容,因为当我点击“下一步”而不是跳到结束的大括号,它跳出了这个功能。

如果我对.add发表评论,那就是问题(我认为)。我的语法错了吗?或者我应该发布更多代码?

3 个答案:

答案 0 :(得分:5)

tabel未初始化,因此为空。

更改

private ArrayList<ArrayList<Character>> tabel;

private ArrayList<ArrayList<Character>> tabel = new ArrayList<ArrayList<Character>>();

或更好:

private List<ArrayList<Character>> tabel = new ArrayList<ArrayList<Character>>();

因为这不会将tabelArrayList联系起来。

答案 1 :(得分:1)

您尚未初始化private列表。执行以下操作:

private List<ArrayList<Character>> tabel = new ArrayList<ArrayList<Character>>();

答案 2 :(得分:0)

我也无法理解嵌套的程度。

最好引用List而不是ArrayList。除非您在具体类中需要一个方法,否则它会使您的程序更灵活地引用接口中的接口和方法。

创建一个类(1),其字段定义为字符列表。将字段设置为构造函数中的新ArrayList。

创建另一个类(2),该类具有定义为类(1)的List的字段。将字段设置为构造函数中的新ArrayList。

创建另一个类(3),该类具有定义为类(2)的List的字段。将字段设置为构造函数中的新ArrayList。

既然您了解自己在做什么,就可以为这3个类提供更有意义的名称。