添加到列表时出现Nullpointer异常

Pet*_*r F 0 java list nullpointerexception

我正在尝试遍历对象列表,以找出哪些对象在互相影响。我将此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

    }
Run Code Online (Sandbox Code Playgroud)

}

listContains类:

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

}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?谢谢

编辑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
Run Code Online (Sandbox Code Playgroud)

我已经在类中初始化了列表变量。

Jay*_*yDM 5

您忘记创建checkedGladiators对象。

因此,在循环之前创建对象为:

List <Gladiators> checkGladiators = new ArrayList <Gladiators>();

然后,在您的循环中,而不是测试checkGladiators == null ...

测试checkGladiators.isEmpty()。