Это действительно работает, но поведение зависит от того, какие условия вы испытываете. Например. этот код:
int i = 2;
int j = 4;
do while(j > 0) {
i--; j--;
System.out.println("i:" + i + " j:" + j);
} while(i > 0);
выходы:
i:1 j:3
i:0 j:2
i:-1 j:1
i:-2 j:0
Так он работает как:
while(j>0) {
}
В то время как перестановкой имена переменных:
do while(i > 0) {
//.. same as above
} while(j > 0);
Выход:
i:1 j:3
i:0 j:2
Похоже, он ведет себя так же, как и в первом случае (т.е. первый пока рассматривается), но здесь приложение не заканчивается!
Резюме:
В то время, когда testA
является не удовлетворены больше и testB
также не удовлетворены, код работает как обычный while(testA){}
цикла.
Но: Если, в то время, когда testA
является больше не удовлетворены, testB
по-прежнему выполняется, петля не выполняется больше и сценарий не завершение. Это применимо только в том случае, если условие «внешнего» цикла необходимо изменить внутри цикла.
Update: И после прочтения другого ответа, я понимаю, что это именно то поведение вложенной do-while
- while
петли.
В любом случае, извлеченный урок: не используйте этот синтаксис, потому что он может вас смутить;)
Поведение, которое вы должны ожидать, состоит в том, что сотрудник поражает вас палкой. – voyager
@voyager К счастью, у меня нет коллег, которых нужно следить; спасибо за совет, хотя! – Pindatjuh