这个for循环的范围可以更小吗?

时间:2016-12-21 12:43:29

标签: java boolean

除了将此行为移动到某个方法或在空白处移动之外,此代码的可变范围是否可以以任何方式缩小?

boolean a = true;
boolean b = false;
boolean c = false;
boolean d = false;
boolean e = false;

{
boolean[] multiBool = { a, b, c, d, e };

int isTrue = 0;
for (boolean bool : multiBool)
   if (bool && ++isTrue > 1) {
      System.out.println("More than 1!");

      break;
   }
}

我很惊讶地发现我无法内联初始化列表:

for (boolean bool : { a, b, c, d, e }) {}

周围的{}将限制multiBoolisTrue的范围,因为它们仅与此特定情况相关。

1 个答案:

答案 0 :(得分:0)

for (boolean bool : { a, b, c, d, e }) {}

无效,但这是:

for (boolean bool : new boolean[] { a, b, c, d, e }) {}

您可以通过消除布尔变量来进一步减少代码:

int isTrue = 0;
for (boolean bool : new boolean[]{true,false,false,false,false}) {
   if (bool && ++isTrue > 1) {
      System.out.println("More than 1!");
      break;
   }
}

当然,如果预先知道布尔变量的值,则根本不需要for循环,因为您已经知道只有一个true值。