Вот структура моей программы:
for(loop1){
if(condition1)
{
for(loop2)
{
for(loop3)
{
if(condition1_3)
{
As condition1_3 is true continue with loop2 next iteration,
No need to execute loop3 remaining iteration
}
else
{
As condition1_3 is false no need to execute remaining part of loop3 and
loop 2 but continue with loop1 remaining part i.e. condition1_1
}
}
}
}
if(condition1_1)
{
some code here
}
}
Я знаю, что мне нужно использовать оператор continue
и break
но не понимаю, как именно? Скажите, пожалуйста, как достичь этого механизма?
Если я понимаю ваш вопрос, вы можете использовать помеченное continue
,
loop1: for (;;) {
if (condition1) {
loop2: for (;;) {
loop3: for (;;) {
if (condition1_3) {
continue loop2;
} else {
continue loop1;
}
}
}
}
}
Вы можете сделать следующее:
for(loop1){
if(condition1)
{
for(loop2)
{
boolean flag=false;
for(loop3)
{
if(condition1_3)
{
break;
}
else
{
flag=true;
break;
}
}
if(flag)
break;
}
}
if(condition1_1)
{
some code here
}
}
Я не совсем понимаю, что вы имеете в виду. Для меня это просто похоже, что вы хотите выпрыгнуть из петель, если выполнено конкретное условие. Таким образом, вы можете либо определить метку для ваших циклов, и использовать continue labelLoopX;
или вы можете удовлетворять условию завершения цикла loop3
если loop3
condition1_3==true
или. условие выхода loop3
и loop2
если condition1_3==false
. например, если loop3 выглядит как for ( int я = 0; я < 10; i++ )
:
if(condition1_3){
//do something important
i=10; //sets i to 10 and condition i < 10 is unsatified
}
else{
//do some other important stuff
i=10; //satify loop3 exitcondition
j=10; //satify loop2 exitcondition
}
Чтобы разразиться и не продолжить использование break3 use break; if (condition1_3) break;
Перерыв; оператор только вырывается из текущего цикла, я думаю, а не в петле, в которую он вложен.
Изменение: пропустить вопрос. Чтобы выйти из обеих циклов, вы можете сделать логический флаг до того, как обе циклы и в конце обеих циклов будут иметь if (breakOut) break;
Это будет решить вопрос
Сделайте следующее:
for(loop1){
boolean flag = false;
if(condition1)
{
for(loop2)
{
if(flag == true)
break;
for(loop3)
{
if(condition1_3)
{
break;
}
else
{
flag = true;
break;
}
}
}
}
if(condition1_1)
{
some code here
}
}
Имейте флаги выхода, которые устанавливаются, когда вы хотите выйти из определенного цикла и проверять в каждом соответствующем цикле, продолжать или выходить.
boolean exitLoop2 = false;
for(loop1){
if(condition1)
{
for(loop2)
{
for(loop3)
{
if(condition1_3)
{
//As condition1_3 is true continue with loop2 next iteration,
//No need to execute loop3 remaining iteration
break;
}
else
{
//As condition1_3 is false no need to execute remaining part of loop3 and
//loop 2 but continue with loop1 remaining part i.e. condition1_1
exitLoop2 = true;
break;
}
}
if(exitLoop2)
{
break;
}
}
}
if(condition1_1)
{
some code here
}
}
Вариантом будет использование переменных - но вы должны подумать о правильной настройке значений:
boolean runFor1 = true;
boolean runFor2 = true;
boolean runFor3 = true;
for(loop1 && runFor1)
{
for(loop2 && runFor2)
{
for(loop3 && runFor3)
{
setRunForX here to skip/unskip loops
}
}
}
}