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 goto
seu primo Java break:label
e 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)
?
break
provavelmente é 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!