MATLAB 的 break 和 continue 用来改写循环的正常流程。break 立刻结束整个循环,continue 只跳过本轮剩下的语句,进入下一轮。
a = 10;
while a < 20
fprintf('value of a: %d
', a);
a = a + 1;
if a > 15
break;
end
end输出只有 10 到 15,循环提前结束。后面就是 break 起的作用。
break:退出当前循环
break 终止它所在的那一层 for 或 while,程序跳到循环后面的语句继续执行。常用于找到目标就收工:
% 找到第一个能被 7 整除的数就停止
for n = 1:100
if mod(n, 7) == 0
fprintf('找到了:%d
', n);
break;
end
endcontinue:跳过本轮剩余语句
continue 不退出循环,只跳过本次循环体里还没执行的部分,直接进入下一轮。下面打印 10 到 19,但跳过 15:
continue 流程:遇到符合条件的数据跳过本轮,直接进入下一轮
a = 9;
while a < 20
a = a + 1;
if a == 15
continue; % 跳过打印,进入下一次
end
fprintf('value of a: %d
', a);
end输出里不会出现 15,其余数字照常打印。
对照
| 关键字 | 作用 |
|---|---|
break | 结束整个当前循环 |
continue | 结束本轮剩余语句,进入下一轮 |
嵌套时只作用一层
在嵌套循环里,break 和 continue 只作用于它们所在的那一层,不会连带退出外层:
for i = 1:3
for j = 1:3
if j == 2
continue; % 只跳过内层 j=2
end
fprintf('%d,%d ', i, j);
end
fprintf('
');
end常见误区
break写在 if 外面:第一次循环就会无条件退出,循环等于没写。- 以为
break能一次跳出多层:它只退一层。要退出多层,通常靠标志变量,或把外层条件设计好。 continue跳过了循环变量的更新:若a = a + 1被跳过,条件可能永远为真。更新语句要放在continue之前,或保证每轮都会执行到。