我有一个while
循环,其中有两个for
循环。我在最里面的for
循环中有一个条件。只要满足该条件,我想退出两个for
循环并继续while
循环:
while (1)
for x=1:20
for y=1:30
if(condition)
end
end
end
end
Matlab在Java中是否有像带标签的语句,还是有其他方法可以做到这一点?
答案 0 :(得分:6)
一个比路易斯·门多更优雅的方式。 ; - )
while (1)
for x=1:20
for y=1:30
quit = (condition);
if quit
break;
end
end
if quit
break;
end
end
end
答案 1 :(得分:4)
只有稍微比A.Donda的答案更优雅(避免两次测试条件):
while 1
for x=1:20
for y=1:30
quit = 0;
if (condition)
quit = 1;
break;
end
end
if quit
break;
end
end
end
答案 2 :(得分:4)
这是一个非常简单的答案,它利用了测试众多简单条件的事实几乎是免费的:
while (1)
go = true;
for x=1:20
for y=1:30
if go && condition
go = false;
end
end
end
end
这种方法非常简单,可以很容易地推广到任意数量的循环,并避免滥用错误处理。
答案 3 :(得分:2)
有点滥用,有点矫枉过正,但这是:还有另一种方式
while (1)
try
for x = 1 : 20
for y = 1 : 30
assert(~(condition), 'break')
end
end
catch err
if ~strcmp(err.message, 'break'), rethrow(err), end
end
end
这种方法的好处是它可以使用任意数量的嵌套循环,并且只需评估condition
一次,而不必将结果存储在变量中。
受到tmpearce评论的启发。
答案 4 :(得分:1)
我只知道一种非常不优雅的方法:检查条件两次。
while (1)
for x=1:20
for y=1:30
if (condition)
break;
end
end
if (condition)
break;
end
end
end
答案 5 :(得分:1)
另一种可能性,它避免使用两个break
语句:如果你在外部for
循环中没有做任何事情,除了调用内部for
循环,你可以合并它们: / p>
[yy xx] = ndgrid(1:20,1:30);
while 1
for n = 1:numel(x)
x = xx(n);
y = yy(n);
if (condition)
break
end
end
end
答案 6 :(得分:0)
立即退出for for循环并继续while while循环。
while (1)
go=1 %
for x=1:20
if go==0;break; %
for y=1:30
if(condition)
go=0;break; %
end
end
end
end