在Java中是否可以为布尔逻辑运算符使用类似于(i++
,++i
)的语法?
我有一个布尔变量,它只适用于foreach
循环的第一次迭代。必须跳过这个迭代。
完整语法是
for (...)
{
if (bool)
{
bool &= false;
continue;
}
}
我想知道是否有任何方法可以在不使用AtomicBoolean
的情况下缩短语法。例如,构造if (bool &= false)
在语法上是正确的,但我认为它将比较最终结果而不是原始值。
Google不是我的朋友,因为搜索查询有误导性。
发布于 2015-07-20 02:29:56
就我个人而言,我会将您当前的代码简化为:
for (...)
{
if (bool)
{
bool = false;
continue;
}
// Rest of code
}
..。但是,如果您真的想在if
条件下作为副作用来执行此操作,则可以使用:
for (...)
{
if (bool && !(bool = false))
{
continue;
}
// Rest of code
}
在这里,&&
操作符的第一个操作数将涵盖后续操作,!(bool = false)
将始终计算为true
,并将bool
设置为false。
另一种选择来自评论:
for (...)
{
if (bool | (bool = false))
{
continue;
}
// Rest of code
}
这在每次迭代中执行赋值,但每次仍然给出正确的结果。
我真的,真的不会使用这最后两种选择。
发布于 2015-07-20 02:32:27
您的代码是通常要做的事情。然而,还有一种选择:
for (SomeType thing : Iterables.skip(things, 1)) {
// process thing
}
这使用Google的Iterables.skip()
方法,并生成预期的输出--每个循环遍历集合并跳过第一个元素。
发布于 2015-07-20 02:36:28
或者,只需使用一个整数变量,并使用++
后增量它。
int iter = 0;
for (...) {
if (iter++ == 0) {
continue;
}
...
}
如果您想跳过第一次迭代,这甚至可能更容易理解。
https://stackoverflow.com/questions/31514139
复制相似问题