исключительно игры разума, автора(ов) этих фрагметов фрагментов ("волюнтаризм!" (с) к.ф "Кавказская пленица")
так как в обоих случаях, цикл основан на счетчике, его гарантированно можно переписать на основе
for, компактнее и более читаемо (понятно)
ps а еще, хорошо бы знать исходную цель? надо ли кого то пропускать? кого? зачем? почем?.. и тд
pps кстати, о креше второго фрагмента, перенос инкримента счетчика
((upd) в конец цикла ну или по меньшей мере после строки
String thePlayer = players[counter];
устраняет креш ;))
может посыл автора примера в этом?
ppps ну или вообще в си-стайл (постинкримент по месту использования) обдумайте, почему исходный пример (вариант 2) крешится? а предложенные правки - нет
String players[] = {"David", "Daniel", "Anna", "Gregory"};
int totalPlayers = players.length;
int counter=0;
while (counter < totalPlayers)
{
String thePlayer = players[counter++];
if (thePlayer.equals("David")){
continue;
}
System.out.println("While equals Congratulations, "+ thePlayer+ "!");
}
в любом случае, расположение break, continue, и инкремента опорного счетчика цикла - исключительно на совести кодера
pppps конец мистики (мы говорим о втором фрагменте)
строка
counter++;
если расположена до
String thePlayer = players[counter];
вызовет креш выхода за диапазон, так как
while (counter < totalPlayers)
условие проверил, но мы тут же его изменяем (инкремент)
counter должен быть
использован после проверки на корректность,
но изменен только после использования..
следите дальше:
counter должен быть
изменен до выхода из данного круга цикла ((
upd)по
continue.. а
break оборвет цикл.. в целом не плохие примеры задуматься/вспомнить, как что работает ))
то есть - если мы поместим его после
continue цикл становится
вечным ))
так что либо
String thePlayer = players[counter++];
либо
String thePlayer = players[counter];
counter++; // но обязательно сразу, строго после, и ни в коем случае не раньше