Skip to content

MATLAB - Continue 语句

continue 语句是用于 for 或 while 循环内部的控制流工具。当 MATLAB 执行 continue 语句时,它会立即停止处理当前循环的迭代,并跳到下一次迭代,跳过该次迭代中循环体内的任何剩余命令。

本质上,continue 的意思是:“我已完成本次迭代,请继续进行下一次。”

continue 语句改变循环的正常流程。以下是发生情况的逐步说明:

  1. 循环开始一次迭代。
  2. 循环内的代码按顺序执行。
  3. 满足 if 条件,触发 continue 语句。
  4. 操作:MATLAB 立即停止执行当前迭代中的任何后续代码。
  5. 控制权跳回循环的顶部。
  6. 循环计数器(在 for 循环中)更新,或条件(在 while 循环中)重新评估。
  7. 如果循环条件仍然为真,则开始下一次迭代。否则,循环终止。

让我们创建一个脚本,只对数据向量中的正数求和,跳过任何负数或零。

% 包含正负混合值的向量
data = [10, 25, -5, 8, -12, 30];
totalSum = 0;
% 遍历数据向量的每个元素
for i = 1:length(data)
currentValue = data(i);
% 检查值是否为非正数
if currentValue <= 0
fprintf('Skipping non-positive value: %d\n', currentValue);
continue; % 跳过本次迭代的其余部分,进入下一次迭代
end
% 只有在未触发 'continue' 时才执行这部分代码
fprintf('Adding value: %d\n', currentValue);
totalSum = totalSum + currentValue;
end
fprintf('\nFinal Sum of Positive Numbers: %d\n', totalSum);

运行此脚本时,会产生以下结果:

添加值: 10
添加值: 25
跳过非正值: -5
添加值: 8
跳过非正值: -12
添加值: 30
正数最终总和: 73

请注意,对于 -5 和 -12 的迭代,打印了“跳过”消息,然后立即继续到下一个元素,绕过了加法步骤。

  • continue 与 break 对比:continue 跳过一次迭代并停留在循环内。break 立即终止整个循环。
  • continue 与 if-else 对比:您通常可以使用嵌套的 if 语句实现相同的逻辑。然而,continue 可以通过减少嵌套深度来提高代码的可读性,尤其是在复杂的循环中。它通过在循环开始时处理特殊情况来帮助扁平化逻辑。
% 使用 if-else 块实现相同逻辑
totalSum = 0;
for i = 1:length(data)
currentValue = data(i);
if currentValue > 0
% 所有处理逻辑都嵌套在此 'if' 块中
fprintf('Adding value: %d\n', currentValue);
totalSum = totalSum + currentValue;
else
fprintf('Skipping non-positive value: %d\n', currentValue);
end
end
fprintf('\nFinal Sum of Positive Numbers: %d\n', totalSum);

对于简单情况,选择是风格问题。对于具有许多条件和处理步骤的循环,在开始时使用 continue 处理异常可以使主处理逻辑更清晰、缩进更少。