Java 如何检查数组的所有成员

Java 如何检查数组的所有成员,java,arrays,Java,Arrays,我正在编写一个基于文本的生存模拟器,它使用一组实体s。实体类包含关于每个实体的数据,例如能量、水合作用和士气。我正要结束这个项目,但我有个问题。为了编写一个checkStatus()方法,我需要一个if语句来检查实体[]。即使我不知道数组的长度,它也会在所有实体上运行。简而言之,如何使用if语句检查数组中所有成员的值?我知道我可能必须使用for循环,使用数组.getLength迭代检查成员。到目前为止,我只能检查单个类中的变量。我也看到过类似的问题,但它们并不完全符合我的要求 另外,我使用的是基

我正在编写一个基于文本的生存模拟器,它使用一组
实体
s。
实体
类包含关于每个实体的数据,例如能量、水合作用和士气。我正要结束这个项目,但我有个问题。为了编写一个
checkStatus()
方法,我需要一个if语句来检查实体[]。即使我不知道数组的长度,它也会在所有实体上运行。简而言之,如何使用if语句检查数组中所有成员的值?我知道我可能必须使用
for
循环,使用
数组.getLength
迭代检查成员。到目前为止,我只能检查单个类中的变量。我也看到过类似的问题,但它们并不完全符合我的要求

另外,我使用的是基本Java,没有框架或库

演示我要查找的内容的伪代码

if Entity[ALL-MEMBERS].isAlive {
    gameOver = true;
}
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());
}
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());
}

首先,因为您可能不知道要使用的实体数量,所以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;
}
List List=new ArrayList();
公共无效补遗(){
//在此处添加实体
}
public-live(){
对于(实体e:列表){
如果(!e.isAlive()){
返回false;
}
}
返回true;
}

或者类似的东西。

首先,由于您可能不知道要使用的实体数量,因此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;
}
List List=new ArrayList();
公共无效补遗(){
//在此处添加实体
}
public-live(){
对于(实体e:列表){
如果(!e.isAlive()){
返回false;
}
}
返回true;
}

或者类似的东西。

假设数组是实体的数组,请尝试以下操作:

for (int i = 0; i < array.length; i++) {
 Entity entity = array[i];
 if (entity.isAlive) {
    gameOver = true;
    //your code here
 }
}
for(int i=0;i
假设数组是实体的数组,请尝试以下操作:

for (int i = 0; i < array.length; i++) {
 Entity entity = array[i];
 if (entity.isAlive) {
    gameOver = true;
    //your code here
 }
}
for(int i=0;i
为了使Java 8更加友好,您可以用方法引用替换
e->e.isAlive()
Entity::isAlive
isAlive
不是一个方法;它是一个
boolean
,由其他类更新。为了使它更加Java 8友好,您可以将
e->e.isAlive()
替换为方法引用:
Entity::isAlive
isAlive
不是一个方法;它是一个
布尔值
,由其他类更新。