2010-04-23 5 views
1

Почему я получаю неопределенную ошибку метки в следующем коде? я игнорирую код, как это не имеет смысла ...Почему я получаю ошибку Undefinedlabel в java?

loopLabel: 
for(i=0;;i++) 
{ 
    { some code; 
    } 
    { come code; 
    } 
} 

if(condition) 
{ 
    if(condition) 
    { some code  } 
    else 
    { 
      some code; 
      continue loopLabel; 
    } 
} 
+0

вы можете поместить продолжение внутри, если оно находится внутри этого верхнего цикла, но не в автономном, если. Потому что он используется для разрыва цикла, что означает игнорировать все остальное, что осталось в конце цикла. – ant

ответ

4

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

Правовое использование что-то вроде:

foo: 
while(cond1) { 
    code; 
    while(cond2) { 
     if(cond3) { 
      continue foo; 
     } 
    } 
} 

(Java guide on branching statements)

+0

, тогда ... есть ли альтернатива, где я могу получить точную функциональность, такую ​​как goto ?? – rohit

+0

К счастью, вы не можете – Bozho

+0

Собственно, вы можете обернуть свой код в 'do {...} while (false);', чтобы иметь возможность вернуться к началу. но это приведет к нечеткому/не поддающемуся контролю коду, поэтому его не одобряют. – rsp

2

Поскольку вы находитесь вне цикла. Метка отображается только внутри цикла.

Этикетки используются только для разрыва и продолжения циклов.

+0

Я сказал что-то не так? – Bozho

+0

Не знаю, но я отменил его –

+0

nope !! ты не сказал ничего плохого! Спасибо за ответ! – rohit

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