MATLAB 的 breakcontinue 用来改写循环的正常流程。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
end

continue:跳过本轮剩余语句

continue 不退出循环,只跳过本次循环体里还没执行的部分,直接进入下一轮。下面打印 10 到 19,但跳过 15:

进入循环满足\n条件?continue循环体余下部分下一轮/结束

continue 流程:遇到符合条件的数据跳过本轮,直接进入下一轮

a = 9;
while a < 20
    a = a + 1;
    if a == 15
        continue;   % 跳过打印,进入下一次
    end
    fprintf('value of a: %d
', a);
end

输出里不会出现 15,其余数字照常打印。

对照

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

嵌套时只作用一层

在嵌套循环里,breakcontinue 只作用于它们所在的那一层,不会连带退出外层:

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 之前,或保证每轮都会执行到。