0

オブジェクトのリストを反復処理して、どのオブジェクトが互いに戦っているのかを把握しようとしています。リストを比較対象として使用して、checkedGladiatorsすでに戦闘に割り当てられていないグラディエーターをチェックしないようにしてsいます。現在、私は を取得しているNullPointerExceptionので、いくつかのテスト テキストを使用して、それが で起こっていることを把握しましたlistContains(checkedGladiators,s)。その前の部分を追加しました。現在、「Null」と「Null Changed」の間でも問題が発生していますが、これは意味がありません。

for (Gladiator s : gladiators){
    if (checkedGladiators == null) {
        System.out.println("Null");
        combat1.add(s);
        checkedGladiators.add(s);   
        System.out.println("Null Changed"); 
    }
    if (listContains(checkedGladiators,s)) { 
        // if gladiator is already in a combat do nothing
    } else { // if he isn't

    }

}

listContains クラス:

public boolean listContains(List<Gladiator> List, Gladiator search) {
    for (Gladiator p : List) {
        if (p.equals(search)) {
        return true;
        }
    }
    return false;

}

なぜこれが起こるのか誰にも分かりますか?ありがとう

編集1:

public class Ai {
private List<Gladiator> gladiators;
private List<List<Gladiator>> combatsList;
private List<Gladiator> checkedGladiators;
private List<Gladiator> combat1;
private List<Gladiator> combat2;
private List<Gladiator> combat3;
private List<Gladiator> combat4;
private List<Gladiator> combat5;
private List<Gladiator> combat6;    
private List<Gladiator> combat7;    
private List<Gladiator> combat8;    
private List<Gladiator> guardList;
private List<Gladiator> advanceList;
private List<Gladiator> retreatList;
int totalCombats = 0; // total combats going on

クラスのリスト変数は既に初期化しています。

4

6 に答える 6

0

checkedGladiators が null かどうかを確認してから、メソッドを呼び出します。

if (checkedGladiators == null) { // <-- null!!
   checkedGladiators.add(s); // <-- null pointer exception.
}
于 2013-06-08T18:05:58.040 に答える