2016-12-21 3 views
-3

Проблема в том, что я не могу написать do while цикл без while часть ... могу ли я пропустить его как-то или ..?Как пропустить во время цикла while?

// 9. Keep adding numbers untill you add number 7 twice in a row . 
int a; 
int b; 

do 
{ 
     Console.WriteLine("add number:"); 
     a = int.Parse(Console.ReadLine()); 
     Console.WriteLine("add number:"); 
     b = int.Parse(Console.ReadLine()); 
     if (a == 7 && b == 7) 
     { 
      break; 
      Console.WriteLine("end"); 

     } 
} 
+2

Как насчет 'while (true) {...}' –

+0

yep Я сделал это с помощью alfie –

ответ

7

Лучший способ сделать это будет иметь состояние в ваше время

while(a != 7 || b != 7) 
{ 
    Console.WriteLine("add number:"); 
    a = int.Parse(Console.ReadLine()); 
    Console.WriteLine("add number:"); 
    b = int.Parse(Console.ReadLine()); 
} 
Console.WriteLine("end"); 

Это позволит сделать цикл автоматически прекращается, когда он приходит к выводу, что оба значения 7

В соответствии с @ Ответ AlexK, вы также можете сделать то, что у вас нет условий, и просто введите true

while(true) 
{ 
    Console.WriteLine("add number:"); 
    a = int.Parse(Console.ReadLine()); 
    Console.WriteLine("add number:"); 
    b = int.Parse(Console.ReadLine()); 
    if (a == 7 && b == 7) 
    { 
     break; 
     Console.WriteLine("end"); 

    } 
} 

Это будет делать то же, что и приведенный выше код, хотя вместо того, чтобы проверять, являются ли значения 7 в начале каждого цикла, он будет циклически бесконечно перемещаться до тех пор, пока вручную не выйдет внутри цикла

Вы также можете заметить, что синтаксис Я использовал это

while(/*condition*/) 
{ 
    //code here 
} 

Это сокращенный вариант синтаксиса, который вы используете, хотя он действует немного по-другому. Хотя в приведенном выше примере кода никогда не будет запускать любой код, если условие не выполняется, когда цикл ввода, приведенный ниже код

do 
{ 
    //code here 
} 
while(/*condition*/); 

всегда будет работать код, содержащийся внутри do по крайней мере, один раз, независимо от того, условие выполнено или нет

0

У вас есть два варианта. Либо установите ваше условие непосредственно на while -part, как уже сказал Альфи, или используйте бесконечный цикл. Это, в частности, полезно, если у вас есть более чем один экзит-путь для вашего цикла, например:

while(true) 
{ 
    if(a == 3) break; 
    if(b == 7) break; 
    // some more code 
} 

Конечно, этот код вполне надуманный и может быть легко заменен if(a == 3 || b == 7) break, но иногда вы не можете (или не хочу) объединить все ваши условия в один сингл. Кроме того, это может быть полезно, если вы хотите разбить итерацию на какое-то условие, но continue на другое (чтобы уменьшить вложение вашего кода, например).

Смежные вопросы