2015-08-10 3 views
1

Если у вас есть цикл:Выход цикла без перерыва/возврата/если

for(i=0;i<10;i++){} 

Теперь, когда i==5, как можно выйти из цикла для полностью без использования break, return или if?

+0

Вы не упомянуть, какой язык вы используете. Почему вы хотите сделать это без использования перерыва, возврата или если? –

+0

Язык - это C# .Это был вопрос интервью на самом деле..curious – tkokane

+0

'for (i = 0; i <5; i ++) {}' – GazTheDestroyer

ответ

0
for(i=0;i<10;i++){ 
(i==5) ? goto Outer : //do something; 
} 
Outer: 
//do something 
+1

Это приводит к синтаксической ошибке. https://ideone.com/29e6sS –

+0

@may быть, потому что '// делать что-то 'комментарий, вам действительно нужно что-то там сделать. – rptwsthi

+0

Даже с чем-то там я все еще получаю ошибку компиляции. Ему не нравится, что он находится там. –

3

Лучшее, что я мог придумать было это:

for (int i = 0; i < 10; i++) 
{ 
    i = (i == 5) ? 10 : i; 

    Trace.WriteLine("i = " + i.ToString()); 
} 

... что вызовет цикл запустить шесть раз (я = 0..5) и отображение этого ..

i = 0 
i = 1 
i = 2 
i = 3 
i = 4 
i = 10 

альтернативный способ «выйти из цикла» (в частности, противным образом) будет делать это ...

for (int i = 0; i < 10; i++) 
{ 
    int a = 3/((i == 5) ? 0 : 1); 

    Trace.WriteLine("i = " + i.ToString()); 
} 

..что сбой, errr, успешно выходит из цикла без использования команд break, return или if.

i = 0 
i = 1 
i = 2 
i = 3 
i = 4 
A first chance exception of type 'System.DivideByZeroException' occurred in MikesProgram.dll 

язык C# .it был интервью вопрос actually..curious

Могу ли я получить работу?

Мне нужно будет проверить ваше здоровье & стоматологические планы, и я должен уйти рано по четвергам, чтобы собрать моих дочерей из школы.

;-)

+0

Dunno о работе, но спасибо за помощь :-) :-) – tkokane

+0

Черт побери. Полагаю, мне нужно продолжать служить Биг-Мак. Вы хотите, чтобы с этим было фри? –

1

ну вот еще один способ, если вы хотите разорвать обработку, когда именно i = 5 без использования break, return или if

for (int lowsetLimit = 0, highestLimit = 10, i = lowsetLimit; i < highestLimit; i++) 
{ 
    //normal code which process before i gets eqaul to 5 goes here... 

    i = (i < 5) ? i : highestLimit; //and here is the pivot point. 
} 
+0

Да, это было полезно – tkokane

0

Вопрос говорит, что цикл должен закончиться когда i = 5, в нем ничего не говорится о запуске, так что это должно быть действительно (тройное операторное решение лучше, но если нам не разрешено использовать какой-либо условный оператор)

for (int i = 0; i < 10; i++) 
    {   
     i=i-4; 
     Console.WriteLine("i = " + i.ToString()); 
     i=i+4; 
    } 

это начинается на -4 и заканчивается на 5.

0

Реальный ответ, конечно, будет следующим:

for (i=0; i!=5; i++) 
{ 
    // do something 
} 

Но давайте сделаем это немного более общий характер: если остановить (выражение) становится истинным.

Второй аргумент цикла for - это логическое выражение, которое определяет, продолжать ли цикл со следующим элементом или нет.

Так что, если вы хотите, чтобы остановить цикл из-за каких-либо условий:

for (i=0; !(expression) && i<10; i++) 
{ 
    // do something 
} 
0

Это работает с использованием while и goto:

for (int i = 0; i < 10; i++) 
{ 
    while (i < 5) 
    { 
     Console.Write(i + " "); 
     goto OutsideWhile; 
    } 
    OutsideWhile: 
     continue; 
} 
// 0 1 2 3 4 
+0

Вопрос гласит, что вам запрещено использовать команду «if» ...! –

+0

@MikeGledhill - спасибо, отредактирован –

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