除了将此行为移动到某个方法或在空白处移动之外,此代码的可变范围是否可以以任何方式缩小?
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 }) {}
周围的{
和}
将限制multiBool
和isTrue
的范围,因为它们仅与此特定情况相关。
答案 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
值。