2

私はゆっくりと夢中になっています...他の参照クラスのインスタンスを保持するために非常に単純なクラス配列を定義しようとしています。しかし、私は常にnullポインタエラーを受け取ります。何が間違っていますか?どんな助けでも私はとても感謝しています!!

//-------------------------
// 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オブジェクト配列に適用されます。たとえば、配列の作成後にインデックス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];タイプ「Kocka」のオブジェクトを保持できるサイズ10の空の配列を作成します。ただし、これは配列にアイテムが含まれていることを意味するものではありません。手動でそれらを割り当てる必要があります。

于 2013-02-17T17:51:35.743 に答える