【问题标题】:While loop end conditionWhile 循环结束条件
【发布时间】:2011-04-14 16:53:23
【问题描述】:

这让我大吃一惊。以下测试失败;循环结束时 i 的值为 9,而不是 8。你能解释一下吗?

import junit.framework.TestCase;

public class TestDoWhile extends TestCase {
    final int LIMIT = 8;

    public void testDoWhile() throws Exception {
        int i = 0;
        do {
        } while (i++ < LIMIT);
        assertEquals(LIMIT, i);
    }
}

【问题讨论】:

  • 我个人会避免任何可能使运算符优先级混淆的代码...

标签: java while-loop


【解决方案1】:

你需要这样做:

++i < LIMIT

条件被评估的方式,然后 i 递增。如果执行上述操作,我将在评估之前递增。

【讨论】:

  • 天啊!谢谢你。只要系统允许,我会尽快接受你的回答。
【解决方案2】:

原因一定是 i++ 在最后一次评估后最后一次递增变量。

【讨论】:

    【解决方案3】:

    在 i 为 8 的循环过程中,++ 将其递增到 9,但作为后递增运算符,与 LIMIT 相比,它是原始的 8,它失败并退出循环。

    【讨论】:

      【解决方案4】:

      i++ 表示在此表达式上使用后递增 i。尝试 ++i 以获得预期的结果。

      /维克多

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 2015-09-08
        • 2012-12-23
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多