2

我慢慢变得疯狂......试图定义一个非常简单的类数组来保存其他引用类的实例。但是我一直收到空指针错误。我错了什么?对于任何帮助,我都非常感谢!

//-------------------------
// main activity
//-------------------------
package bangkokguy.android.fromscratch;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Palya kaki = new Palya();
}

@Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
  }
}
//-------------------------
// class Palya
//-------------------------
package bangkokguy.android.fromscratch;

public class Palya {
  public Kocka sok_kocka [];
  public Palya() {
    sok_kocka = new Kocka[10];
    <b>sok_kocka [1].letter = ' '; /*!!! null pointer here */</b>
  }
}
//-------------------------
// class Kocka
//-------------------------
package bangkokguy.android.fromscratch;

public class Kocka /*implements _NewLetter, _IsFree*/ {
  public char letter;
  static final char c_empty = ' ';
  public Kocka () {letter = c_empty;}
  public Kocka (char letterke) {letter = letterke;}
  public void _NewLetter (char letterke) {letter = letterke;}
  public boolean _IsFree () {return letter == c_empty;}
}
4

2 回答 2

2

制作数组是不够的,您还必须为每个索引提供一些内容。否则,数组中的每个索引都将适用null于 Object 数组。例如,在创建数组后将某些内容分配给索引 0:

sok_kocka = new Kocka[10]; 
sok_kocka [0] = new Kocka();

如果要避免 NPE,则必须对数组中的所有索引执行此操作。还要记住数组索引从 开始0不是 1

于 2013-02-17T17:49:22.320 回答
0

sok_kocka = new Kocka[10];创建一个大小为 10 的空数组,可以容纳“Kocka”类型的对象。然而,这并不意味着数组中有任何项目 - 您必须手动分配这些项目。

于 2013-02-17T17:51:35.743 回答