【问题标题】:Do while loop check for last iteration [closed]对最后一次迭代进行while循环检查[关闭]
【发布时间】: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)
  • 同意@Ru​​fusL。此外,有时您将退出标准放在循环块的中间。像while (true) { Abc(); Def(); if (isLastNow) { Xyz(); break(); /* exits! */ } Ghi(); Jkl(); } /* loop end */ 这样的东西。没事儿。当然,大多数情况下,您希望退出条件是第一个或最后一个,这就是 whiledo 语句的设计方式。

标签: c# .net .net-4.0


【解决方案1】:

当然,您可以这样做来计算迭代次数 但将“int iterationCheck=0”变量声明放在 do/while 范围之前。

你也可以使用“for”循环(这样会更好)

但这一切都取决于循环的条件。 因为我们无法推断您的循环的“退出”条件,所以我们无法提供准确的答案。

【讨论】:

  • 我明白你的意思,但我在火车上,代码正在工作。 while 条件调用了一个方法来检查许多事情并且并不真正暗示迭代
  • Rufus 评论可能是您的解决方案。
猜你喜欢
  • 2021-10-31
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多