我正在编写一个使用Entity
数组的基于文本的生存模拟器。 Entity
类包含有关每个实体的数据,例如能量,水合作用和士气。我开始结束项目,但我遇到了问题。为了编写checkStatus()
方法,我需要有一个if语句来检查所有实体上的Entity []。isAlive,即使我不知道数组有多长。简而言之,如何使用if语句检查所有成员的值?我知道我可能不得不使用for
循环来迭代检查成员,array.getLength
。到目前为止,我只能检查单个类中的变量。我见过类似的问题,但他们找不到我想要的东西。
P.S。我使用的是基本的Java,没有框架或库。
伪代码,展示我正在寻找的东西
if Entity[ALL-MEMBERS].isAlive {
gameOver = true;
}
答案 0 :(得分:6)
Java 6,7和8:
public boolean areAllAlive(Entity[] entities) {
if(entities == null || entities.length == 0) {
return false; //?
}
for(Entity e : entities) {
if(!e.isAlive()) {
return false;
}
}
return true;
}
Java 8,使用流/函数:
public boolean areAllAlive(Entity[] entities) {
if(entities == null || entities.length == 0) {
return false; //?
}
return Arrays.stream(entities).allMatch(e -> e.isAlive());
}
答案 1 :(得分:0)
首先,由于您可能不知道您将要使用的实体数量,因此ArrayList可能是更好的选择。那么是的,你应该使用增强的for循环:
List<Entity> list = new ArrayList<>();
public void addEntities(){
//add Entities here
}
public boolean ifAlive(){
for (Entity e: list){
if (!e.isAlive()){
return false;
}
}
return true;
}
或类似的东西。
答案 2 :(得分:0)
假设数组是你的实体数组,试试这个。:
for (int i = 0; i < array.length; i++) {
Entity entity = array[i];
if (entity.isAlive) {
gameOver = true;
//your code here
}
}