0
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)时,我得到了很多奇怪的“错误”,或者至少我遇到了一些我认为出乎意料的事情。

私有静态 int 不会出现在调试的“变量”部分中。

NullPointerException打开了,tabel.add(...)但是当我观看调试时,它进入了for一次,不会在表中添加任何内容,因为当我点击“下一步”而不是跳到右括号时,它会跳出函数。

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

4

3 回答 3

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.

于 2013-05-21T17:18:15.223 回答
1

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

private List<ArrayList<Character>> tabel = new ArrayList<ArrayList<Character>>();
于 2013-05-21T17:18:44.053 回答
0

我也很难理解那个级别的嵌套。

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

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

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

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

既然你明白你在做什么,你可以给这 3 个类起更有意义的名字。

于 2013-05-21T18:06:00.197 回答