【发布时间】:2017-09-21 17:31:17
【问题描述】:
这听起来像是一个基本的问题,但我想检查一下我的思维过程是否正确。
我有一个 do while 循环,我想检查循环何时进入最后一次迭代,以便设置值或不设置值。我有这种解决方案,但没有感觉,我想知道是否有另一种方法。
do
{
int iterationCheck ++;
if( iterationCheck! = counter)
// Do something
counter++;
} while (true)
这是正确的还是有更好的方法?
【问题讨论】:
-
这甚至不会编译,更不用说正确运行了。另外,为什么不在这里使用
for循环呢? -
嗯,这只是列出一个思考过程来显示问题所在,而不是给你一些编译的东西
-
如果您展示了您正在尝试的实际代码,会更容易理解这个问题。请参阅:minimal reproducible example.
-
似乎最好的方法是对循环内的
while条件进行额外检查。您当前的示例不好,因为您没有“最终迭代”(您向我们展示了无限循环)。考虑如下示例:do { cart.AddItem(); } while (!cart.IsFull)。那么你要做的是:do { cart.AddItem(); if (cart.IsFull) { // this is the last iteration } } while (!cart.IsFull) -
同意@RufusL。此外,有时您将退出标准放在循环块的中间。像
while (true) { Abc(); Def(); if (isLastNow) { Xyz(); break(); /* exits! */ } Ghi(); Jkl(); } /* loop end */这样的东西。没事儿。当然,大多数情况下,您希望退出条件是第一个或最后一个,这就是while和do语句的设计方式。