这就是我要做一个while循环的方法:
boolean more = true;
while (more)
{
// do something
if (someTest())
{
more = false;
}
}
这是非常标准的。我很想知道是否有办法在Java中执行类似下面的代码:(我想我在C中看到了类似的东西)
// The code below doesn't compile (obviously)
while (boolean more = true)
{
// do something
if (someTest())
{
more = false;
}
}
我只问这个,因为目前我不喜欢我在定义条件中使用的变量的方式(在这种情况下:“更多”)在之外的循环范围,甚至虽然它只是在里面循环。在循环结束后,它没有任何意义。
* *更新* *
在参观了Porcaline密室后,我想到了一个想法:
for (boolean more=true; more; more=someTest())
{
// do something
}
它并不完美;它正在滥用for循环,我想不出一种方法来执行循环至少一次,但它已经接近了...有没有办法确保循环执行1次以上?
答案 0 :(得分:9)
要按字面意思回答您的问题,您可以
for(boolean more = true; more; ) {
more = !someTest();
}
但这与
大致相同while(!someTest());
如果必须至少执行一次
do {
} while(!someTest());
答案 1 :(得分:1)
对于您的具体情况,您可以将代码缩减为:
while (true) {
if (someTest()) {
break;
}
}
通常,您可以使用内部范围声明替换外部范围声明,但是您需要移动循环条件:
while (true) {
boolean more=true;
...
if (someTest()) {
more = false;
}
...
if (!more) {
break;
}
}
甚至:
do {
boolean more=true;
...
if (someTest()) {
more = false;
}
...
if (!more) {
break;
}
} while (true);
我认为在循环之外定义你的条件更清楚。
答案 2 :(得分:0)
KidTempo,在你给出的例子中,我认为每次循环都会重新初始化。每次循环时,都会重新计算条件,因此假设您能够在条件中定义变量,每次重新计算条件时,都会重新初始化变量。这也适用于其他类型的条件,所以我想避免在条件中定义变量。