本节说明 MATLAB 中改写循环正常流程的 break 与 continue。break 立即终止其所在的 for 或 while 循环;continue 跳过本轮循环体中尚未执行的语句,进入下一轮迭代。Java、Python 等语言亦有同名或相近语义的关键字。

a = 10;
while a < 20
    fprintf('value of a: %d\n', a);
    a = a + 1;
    if a > 15
        break;
    end
end

输出为 10 至 15;当 a 增至 16 时,break 终止整个 while 循环。

break:退出当前循环

break 结束其所在的那一层循环,程序从循环后的语句继续执行。在搜索满足条件的第一个元素时较常用:

% 找到第一个能被 7 整除的数即停止
for n = 1:100
    if mod(n, 7) == 0
        fprintf('找到了:%d\n', n);
        break;
    end
end

continue:跳过本轮剩余语句

continue 不退出循环,仅跳过本次迭代中 continue 之后的语句。下列示例打印 10 至 19,但跳过 15:

进入循环条件?是continue否循环体余下部分下一轮/结束

continue:满足条件时跳过本轮剩余语句,直接进入下一轮。

a = 9;
while a < 20
    a = a + 1;
    if a == 15
        continue;
    end
    fprintf('value of a: %d\n', a);
end

输出中不包含 15,其余取值照常打印。

对照

关键字作用
break终止整个当前循环
continue结束本轮剩余语句,进入下一轮

嵌套时只作用一层

在嵌套循环中,break 与 continue 仅影响其直接所在的内层或外层循环,不会一次退出多层:

for i = 1:3
    for j = 1:3
        if j == 2
            continue;
        end
        fprintf('%d,%d  ', i, j);
    end
    fprintf('\n');
end

常见误区

  • 将 break 写在循环体最外层且无条件的分支外:第一次迭代即退出,循环失去意义。
  • 误以为 break 可一次跳出多层嵌套:须借助标志变量或重构循环条件。
  • continue 跳过了循环变量的更新语句:若更新写在 continue 之后且每轮未必执行到,条件可能恒为真。更新语句宜放在 continue 之前,或保证每轮都会执行到。

本节说明了 break 与 continue 的语义、嵌套循环中的作用范围及使用注意点。下一节介绍函数:函数文件结构、多输入输出与子函数。