オブジェクトのリストを反復処理して、どのオブジェクトが互いに戦っているのかを把握しようとしています。リストを比較対象として使用して、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
クラスのリスト変数は既に初期化しています。