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