Estou programando em Java há vários anos, mas acabei de voltar à escola para obter um diploma formal. Fiquei bastante surpreso ao saber que, na minha última tarefa, perdi pontos por usar um loop como o abaixo.
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
Agora, para o meu teste, estou apenas procurando por alguma entrada do console, mas me disseram que esse tipo de loop é desencorajado porque o uso breaké semelhante goto, simplesmente não fazemos isso.
Entendo completamente as armadilhas de gotoseu primo Java break:labele tenho o bom senso de não usá-las. Sei também que um programa mais completo forneceria outros meios de fuga, por exemplo, para encerrar o programa, mas não foi por isso que meu professor citou, então ...
O que há de errado do-while(true)?
breakprovavelmente é bem-intencionada, mas realmente mal compreendida. Talvez você possa educar seu professor sobre isso;) Na minha experiência, os professores não sabem muito sobre o ofício da programação.
do {} while (true)é equivalente while(true) {}e o último é, de longe, a forma mais convencional e muito mais clara.
break, deve tentar programar em uma linguagem sem ela. Não são necessários muitos loops antes que você deseje!