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
发表评论,那就是问题(我认为)。我的语法错了吗?或者我应该发布更多代码?
答案 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>>();
因为这不会将tabel
与ArrayList
联系起来。
答案 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个类提供更有意义的名称。