如何检查数组的所有成员

时间:2015-01-17 15:20:28

标签: java arrays

我正在编写一个使用Entity数组的基于文本的生存模拟器。 Entity类包含有关每个实体的数据,例如能量,水合作用和士气。我开始结束项目,但我遇到了问题。为了编写checkStatus()方法,我需要有一个if语句来检查所有实体上的Entity []。isAlive,即使我不知道数组有多长。简而言之,如何使用if语句检查所有成员的值?我知道我可能不得不使用for循环来迭代检查成员,array.getLength。到目前为止,我只能检查单个类中的变量。我见过类似的问题,但他们找不到我想要的东西。

P.S。我使用的是基本的Java,没有框架或库。

伪代码,展示我正在寻找的东西

if Entity[ALL-MEMBERS].isAlive {
    gameOver = true;
}

3 个答案:

答案 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
 }
}