Как заменить "пока" на цикл "для" петли?
Я хочу заменить цикл "while" циклом "for" В C#, как это сделать? Спасибо.
Например:
do { // Do here } while (condition);
преобразовать его в цикл "for"????
do { // Do here } while (condition);
Это всего лишь соглашение о том, что цикл for должен повторяться фиксированное число раз, и его можно рассматривать как очень универсальный оператор цикла общего назначения. Вероятно, лучше всего придерживаться Конвенции в большинстве случаев, иначе код может стать трудным для понимания или, другими словами, легко неправильно понять.
Во всяком случае, вот два примера, показывающие эквиваленты for и do while, ни один из которых не имеет типичных операторов взаимодействия i++.
Этот пример заканчивается, когда генератор случайных чисел дает нам 8.
private static void DoWhileSimulation() { // Use a known seed for Random so that the sequence can be reproduced const Int32 Seed = 0; Console.WriteLine("For"); Random rnd = new Random(Seed); for (Int32 i = 0; i != 8; i = rnd.Next(0, 13)) { Console.WriteLine(i); } Console.WriteLine(); Console.WriteLine("Do While"); // Set Random to generate the same sequence rnd = new Random(Seed); Int32 j = 0; do { Console.WriteLine(j); j = rnd.Next(0, 13); } while (j != 8); Console.WriteLine(); }
private static void TimeLoop() { // Loop for 5 seconds Console.WriteLine("For Time"); for (DateTime nowf = DateTime.Now, endTimef = nowf.AddSeconds(5); nowf < endTimef; nowf = DateTime.Now) { Console.WriteLine(nowf.ToLongTimeString()); System.Threading.Thread.Sleep(1000); } Console.WriteLine("Do While Time"); DateTime noww = DateTime.Now, endTimew = noww.AddSeconds(5); do { Console.WriteLine(noww.ToLongTimeString()); System.Threading.Thread.Sleep(1000); noww = DateTime.Now; } while (noww < endTimew); }
Имейте 5 для подчеркивания католицизма "за".
Вы можете заменить все циклы for, foreach или do/while циклами 'while', но обратное неверно...
циклы " for " зацикливаются на количественном количестве итераций : ваш пример (do/while) вполне может работать вечно, если условие выхода никогда не будет выполнено.
Так что без дальнейших подробностей о вашем состоянии тогда ответ таков : невозможно.
Большое спасибо за ваш ответ, я его понял.
- ответ таков : невозможно."
Это просто неправильно! Конечно это возможно:
for (bool first = true; first || condition; first = false)
{
// делать все
}
Я бы поднял голос, если бы мог. Имейте виртуальную 5 для сгибания синтаксиса по вашей воле.
Порочное решение :)
Вы правы, что это делает свою работу, но я бы все равно не рассматривал это как жизнеспособный ответ : кроме того, если вы хотите появиться в Зале славы coding horror :)
Однако было бы неразумно давать этот ответ в качестве домашнего задания, если вы его не понимаете!
Вам нужно реализовать do..while loop с for loop правильно??
Итак, в цикле for, На первой итерации, каким бы ни было условие, необходимое для обработки блока кода.
Для этого что-то вроде,
for (int i=0; (i==0)?false:i<10; i++) { //operations }
Как сказал вам гирек Ле Барс, для циклов[^] АР предназначенный цикл для Счетного числа итераций, но это не значит, что они не могут быть использованы иначе. Следующий пример будет циклическим до тех пор, пока condition
равняется true
.
for(;condition;) { Whatever(); }В цикле for есть три параметра. В Примере опущены первое и последнее, и это хорошо компилируется.
do{ }while()
с другой стороны, выполните один раз и проверьте после этого, следует ли повторять или нет. Так что, несмотря на условие, которое не равно истинный, цикл выполняется один раз.
Это очень просто в c#, как c, c++ есть
for(int i=0;i<=условие;i++)
Спасибо
Принц Шарма
О, "условие" - это логическое выражение, можете ли вы сравнить целое число с логическим выражением?
нет, вы не можете... этот ответ вводит в заблуждение