0

我在下面得到一个 nullPointerException 。有人可以解释为什么吗?谢谢!

private SpatialPooler spatialPooler;
private Region        region;
private Column        column33;


public void setUp()
{
    this.spatialPooler = new SpatialPooler();

    this.region = new Region(30, 40, 6, 8, 1.0f, 1, 1);

    this.column33 = this.region.getColumn(3, 3);
}

public void addActiveColumn(Column activeColumn)
{
    this.activeColumns.add(activeColumn); // nullPointerException here!
}

public Column getActiveColumn(int x, int y)
{
    for (Column activeColumn : this.activeColumns)
    {
        if (activeColumn.getX() == x && activeColumn.getY() == y)
        {
            return activeColumn;
        }
    }
    return null;
}

// in a test class that is in the same package.
public void testGetAndAddActiveColumn()
{
    this.spatialPooler.addActiveColumn(this.column33);
    assertNull(this.spatialPooler.getActiveColumn(3, 3));

    this.column33.setActiveState(true);
    assertEquals(this.column33, this.spatialPooler.getActiveColumn(3, 3));
}
4

2 回答 2

1

您的代码没有显示activeColumns在任何地方被初始化。

如果它是Column对象的列表,则应将此代码放在某处:

List<Column> activeColumns = new ArrayList<Column>();

您可以将它放在构造函数中,或者在声明时使用上面的代码activeColumns

于 2012-11-11T05:12:40.967 回答
0

NullPointerExceptions 主要是因为您使用的是未初始化的变量。我假设 activeColumns 尚未初始化。它不是成员,因此它在该功能内没有范围。你可以通过几种方式修复它

1) 局部变量

2)添加activeColumns作为成员

3) 改变函数的行为

于 2012-11-11T04:48:24.863 回答