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)
我已经在类中初始化了列表变量。
您忘记创建checkedGladiators对象。
因此,在循环之前创建对象为:
List <Gladiators> checkGladiators = new ArrayList <Gladiators>();
然后,在您的循环中,而不是测试checkGladiators == null ...
测试checkGladiators.isEmpty()。
| 归档时间: |
|
| 查看次数: |
6984 次 |
| 最近记录: |