0

私は最近、Java に C# にかなりの数か月を費やしてきましたが、フォーマット方法がわからないことに巻き込まれました。

私の問題を説明するために一緒に投げた小さな例。

タイプ「Creature」のオブジェクトをタイプ「Player」のオブジェクトに追加しようとしています

現在、このように:

                                                        //Null items are objects
Player newPlayer = new Player("This", "Is", "Here", 1 , 1, 1, null, null, null);        

Creature c = null;                                  //Null items are objects
c = new Creature("Name", "Species",  100, 5.5, 10.5, 1, 100, null, null, null);

newPlayer.addCreature(c);

しかし、私が得ている問題はjava.lang.NullPointException.

プレーヤー クラスは次の場所で確認できます。

public Player(String Username, String Password, String Email, int Tokens, int Level, int Experience, Vector<Creature> Creature, Vector<Food> Food, Vector<Item> Item) {
    m_username = Username;
    m_password = Password;
    m_email = Email;
    m_tokens = Tokens;
    m_level = Level;
    m_experience = Experience;
    m_creature = Creature;
    m_food = Food;
    m_item = Item;

}   

public void addCreature(Creature c)
{
    m_creature.add(c);      
}

そしてクリーチャー:

public Creature(String Name, String Species, int Health, double Damage, double Regen, int Level, int Exp, Vector<Effect> ActiveEffect, Vector<Attack> Attack, Vector<Specialisation> Specialisation )
{
    m_name = Name;
    m_species = Species;
    m_health = Health;
    m_damageMultiplier = Damage;
    m_regenRate = Regen;
    m_level = Level;
    m_experience = Exp;
    m_activeEffect = ActiveEffect;      
    m_attack = Attack;
    m_specialisation = Specialisation;      

}

これを使用してインスタンスを作成するにはどうすればよいですか?

4

2 に答える 2

1

これは、格納しているベクトルへの参照がnull. nullコンストラクターに s を渡しています。

渡すnew vector<Creature>()と、実際には新しく構築されたベクトルへの参照が渡されます。まだクリーチャー オブジェクトは含まれていません。add(..)以前は、null に設定された参照に対して関数を呼び出そうとしていたため、失敗していました。

これを試して:

Player newPlayer = new Player("This", "Is", "Here", 1 , 1, 1, new Vector<Creature>(), new Vector<Food>(), new Vector<Item>());
                                                              ^ new empty vector      ^ new empty vector  ^ new empty vector
于 2012-12-09T13:38:25.387 に答える
0

addCreature実装を見ないと何とも言えません。例外の Stackstrace を注意深く見てください。例外が発生した正確な行番号が表示されます。

于 2012-12-09T13:31:49.097 に答える