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あなたのコードは、どこにも初期化されていることを示していません。

オブジェクトのリストの場合は、次のコードをどこかに配置する必要があります。

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 に答える