if(robots[0] != null && !robots[0].isStrong()) {
if(robots[1] != null &&!robots[1].isStrong()) {
if(robots[2] != null &&!robots[2].isStrong()) {
//do something
}
}
}
我想检查一下所有机器人是否不坚固,如果不都坚固,那就做点什么。 想象一下,我有10个机器人,如果条件允许,我是否必须写10个机器人?
答案 0 :(得分:8)
假设您要检查robots
数组的每个元素的这些条件是否成立,并且您正在使用Java 8或更高版本:
if (Arrays.stream(robots).allMatch(r -> r!=null && !r.isStrong())) {
// do whatever
}
答案 1 :(得分:3)
使用Stream.of
和allMatch
:
Robot[] robots = new Robot[10];
// ... fill array
if (Stream.of(robots).allMatch(r -> r != null && ! r.isStrong())) {
// ...
}
答案 2 :(得分:2)
boolean allStrong = true;
for (int i = 0; i < robots.length; i++) {
allStrong = allStrong && robots[i].isStrong();
if (!allStrong) break; // exit loop because condition is already false
}
更新
boolean allWeak = true;
for (int i = 0; i < robots.length; i++) {
allWeak = allWeak && !robots[i].isStrong();
if (!allWeak) break; // exit loop because condition is already true
}
答案 3 :(得分:2)
数组的全部目的是(几乎)从不使用显式索引(例如robots[0]
),而是依靠 loop 构造,例如:
for (Robot robot : robotArrayOrList) {
do something about each robot instance
答案 4 :(得分:1)
使用循环或流,流更干净
使用循环
int stupidCountVar = 0;
for (int i=0; i < robots.size(); i++) {
if (robots[i] != null && !robots[i].isStrong())
{
stupidCountVar++;
}
}
if(stupidCountVar==robots.size())
{
// your code to survive
}
使用流过滤数据
Stream<String> yourArrayStream = Arrays.stream(robots);
fitRobots = yourArrayStream.filter(robot - > robot!= null && !robot.isStrong())
.collect(Collectors.toList());
[编辑]- 现在就您而言-
if (yourArrayStream.allMatch(robot -> robot !=null && !robot.isStrong())) {
// your code to survive
}
答案 5 :(得分:0)
您可以循环查看所有这些内容:
boolean myCondition = true;
for(int i= 0; i < robots.length; i++){
if(robots[i] == null || robots[i].isStrong() ){
myCondition = false;
}
}
// so here you know if myCondition is true or false
答案 6 :(得分:0)
您可以使用信息流来过滤必填项:
Predicate<Robot[]> isAllNotStrong = robots -> Optional.of(Arrays.stream(robots)).orElseGet(Stream::empty)
.filter(Objects::nonNull)
.noneMatch(Robot::isStrong);
答案 7 :(得分:0)
如果您有一系列机器人,则可以使用自己喜欢的循环或迭代器对其进行迭代:
for(int i = 0; i < robots.length; i++) {
if(robots[i] == null || robots[i].isStrong()) return false;
}
答案 8 :(得分:0)
boolean notStrong = false;
for (Robot robot : robotArray) {
if( robot == null || !robots[i].isStrong() ) {
notStrong = true;
break;
}
}
// this avoids running the Loop again and again if the condition already fails