我有一个player和group类,用于实例化以下内容:
Player andrew = new Player(*name:* Andrew, *health:* 20)
Player samantha = new Player(*name:* Samantha, *health:* 32)
Player tony = new Player(*name:* Tony, *health:* 5)
Player flynn = new Player(*name:* Flynn, *health:* 0)
Player oliver = new Player(*name:* Oliver, *health:* 0)
Group myGroup = new Group(*player:* andrew, *player:* samantha, *player:* tony, *player:* flynn, *player:* oliver)下面的方法是我在group类中定义的,它将组中的所有参与者放到Array中,并在group对象上调用时返回它:
myGroup.putIntoList()所以把这条线放在上面就会回来了:
[Player@andrew, Player@samantha, Player@tony, Player@flynn, Player@oliver]数组的每个元素都是我先前创建的player对象。
我还在player类中定义了一个.getHealth()方法,它返回播放机的健康状态。
说到要点,我想在Group类中编写一个方法,它随机从生成的数组中选择一个播放器,该数组也不是死的(即健康状况高于0) --这就是我迄今为止所写的:
import java.util.Random;
Random myNumber = new Random();
public Player pickOutAndReturn(){
int anotherNumber = myNumber.nextInt(5);
return this.putIntoList()[anotherNumber];
}问题是,它可以随机返回任何5名球员。如何更改它,使其只返回活动成员,但随机返回,而不将死玩家从数组中删除。
发布于 2020-12-05 19:05:32
在随机选择之前,使用以下方法过滤数组:
Players [] health_players = Arrays.stream(this.putIntoList())
.filter(i -> i.getHealth() > 0)
.toArray();然后才从health_players中随机选择。
Random myNumber = new Random();
public Player pickOutAndReturn(){
Players [] health_players = Arrays.stream(this.putIntoList())
.filter(i -> i.getHealth() > 0)
.toArray();
int anotherNumber = myNumber.nextInt(health_players.length);
return health_players[anotherNumber];
}https://stackoverflow.com/questions/65160723
复制相似问题