CaffeineToCode
CaffeineToCode

Reputation: 830

How to check all members of an array

I am writing a text-based survival simulator that uses an array of Entitys. The Entity class contains data about each entity, such as energy, hydration, and morale. I'm starting to wrap up the project but I have a problem. In order to write a checkStatus() method, I need to have an if statement that checks for Entity[].isAlive on all entities, even if I don't know how long the array is. In short, how can I use an if statement to check for the value of all members of an array? I know I will probably have to use a for loop to iteratively check the members, with the array.getLength. So far I can only check variables in single classes. I have seen similar questions but they don't quite get what I'm looking for.

P.S. I'm using basic Java, with no frameworks or libraries.

Pseudo-code that demonstrates what I'm looking for

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

Upvotes: 0

Views: 330

Answers (3)

Varun Singh
Varun Singh

Reputation: 1135

Assuming array is your entity's array, try this.:

for (int i = 0; i < array.length; i++) {
 Entity entity = array[i];
 if (entity.isAlive) {
    gameOver = true;
    //your code here
 }
}

Upvotes: 0

Angelo Alvisi
Angelo Alvisi

Reputation: 479

First, since you probably don't know the number of Entities you are going to use before hand an ArrayList is probably a better choice. Then yes, you should use an enhanced for loop:

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;
}

or something like that.

Upvotes: 0

Todd
Todd

Reputation: 31700

Java 6, 7, and 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, using streams/functions:

public boolean areAllAlive(Entity[] entities) {
    if(entities == null || entities.length == 0) {
        return false; //?
    }
    return Arrays.stream(entities).allMatch(e -> e.isAlive());
}

Upvotes: 6

Related Questions