Пока условие конца цикла - PullRequest
0 голосов
/ 14 апреля 2011

Это пугает меня. Следующий тест не пройден; цикл заканчивается тем, что у меня значение 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);
    }
}

Ответы [ 4 ]

7 голосов
/ 14 апреля 2011

Вам нужно сделать это:

++i < LIMIT

как у вас есть, условие оценивается, а затем i увеличивается. Если вы сделаете выше, я буду увеличиваться до оценки.

4 голосов
/ 14 апреля 2011

Причиной должен быть i ++, который увеличивает значение переменной в последний раз после последней оценки.

0 голосов
/ 14 апреля 2011

i ++ означает приращение i после его использования в этом выражении.Попробуйте ++ i, чтобы получить ожидаемый результат.

/ Victor

0 голосов
/ 14 апреля 2011

Во время прохождения цикла, когда i равен 8, ++ увеличивает его до 9, но, будучи оператором постинкремента, это исходные 8 по сравнению с LIMIT, который завершается ошибкой и выходит из цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...