Na minha opinião, um loop for é usado para iterar em um intervalo conhecido ou determinável.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
que é equivalente (escopo de i de lado) a:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
Em outras palavras, o for
loop é simplesmente um açúcar sintático (altamente útil) para uma while
construção comumente usada .
No entanto, estou vendo muitas for(;;)
construções na Web que são funcionalmente equivalentes awhile(true)
Qual o motivo disso? Por que o loop for infinito seria preferido sobre o loop while infinito?
// Eu até vi um livro sobre Java que não usava loops! Levando a construções monstruosas como:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
e for
aqui e a pergunta não mudaria. while(true)
e for(;;)
significa a mesma coisa. Você obviamente tem uma forte preferência por while
, outros podem ter uma preferência igualmente forte por for
. É impossível dizer que um é mais correto que o outro.
for(;;)
confuso. É um idioma C padrão, que você documentará na seção 3.5 de K&R (2e). Eu entendo que você não gosta; você deve entender que outras pessoas obviamente preferem (senão você nunca a veria). Pode ser mais ou menos aceitável em idiomas diferentes de C; você marcou esse idioma como agnóstico, o que diminui apenas a possibilidade de uma resposta definitiva. Novamente, votei para fechar porque o Q não é construtivo; se eu estivesse ofendido, eu teria sinalizado como ofensivo em vez de ou além do fechamento. Isso é tudo.
wheeeeeeee { ... }