Я программирую на Java уже несколько лет, но недавно я вернулся в школу, чтобы получить официальную степень. Я был очень удивлен, узнав, что в моем последнем задании я потерял очки за использование цикла, подобного приведенному ниже.
do{
//get some input.
//if the input meets my conditions, break;
//Otherwise ask again.
} while(true)
Теперь для моего теста я просто сканирую какой-то консольный ввод, но мне сказали, что такой цикл не рекомендуется, потому что использование break
сродни тому goto
, что мы просто не делаем.
Я полностью понимаю подводные камни goto
и его двоюродный брат Java break:label
, и у меня есть здравый смысл не использовать их. Я также понимаю, что более полная программа предоставила бы некоторые другие средства спасения, скажем, например, просто для завершения программы, но это не было причиной, по которой говорил мой профессор, так что ...
Что не так с do-while(true)
?
break
, вероятно, имеет смысл, но на самом деле неправильно понято. Возможно, вы можете обучить своего профессора этому;) По моему опыту, профессора мало знают о ремесле программирования.
do {} while (true)
эквивалентно тому, while(true) {}
что последнее гораздо более общепринятая форма и намного яснее.
break
, он должен попробовать программирование на языке без него. Это не займет слишком много циклов, прежде чем вы захотите этого!