Skip to main content

3月18日 continue跳转语句

一、单词

continue :v. 继续

  • continue to read: 继续读
  • continue to write 继续写

二、continue语句

用途:跳出本次循环,执行下一次循环。

它不是必须的,但用对了能让代码更清晰、更简洁、少嵌套

三、工作原理

  • 在 for 循环中:当 continue 被执行,程序会跳过当前迭代剩余的代码,直接跳转到迭代语句i++),然后进行条件判断。

  • 在 while 循环中:当 continue 被执行,程序会直接跳转到 while条件判断部分。

  • 在 foreach 循环中,跳过当前元素的处理,直接获取集合中的下一个元素。

  • 在 do while 循环中,程序会直接跳转到 while 的条件判断部分。

四、continue VS break

语句作用场景
continue跳过本次,继续下一次过滤、跳过、不处理这项、简化 if 嵌套
break直接结束整个循环做完了、找到结果、退出

五、应用场景

1. 过滤不符合条件的数据(最常用)

当你只想处理符合条件的项,不符合的直接跳过。

比如:

  • 只打印奇数,跳过偶数
  • 只统计正数,跳过负数
  • 只处理有效数据,跳过无效数据

这是 continue 90% 的使用场景。


2. 避免代码多层嵌套(让代码更干净)

不用 continue,你可能会写:

if(条件1)
{
if(条件2)
{
if(条件3)
{
// 真正要执行的代码
}
}
}

用 continue 可以改成扁平化写法

if(!条件1) continue;
if(!条件2) continue;
if(!条件3) continue;

// 真正要执行的代码(无嵌套!)

代码更干净、更容易读。

3. 循环中遇到“不需要处理”的情况,直接跳过

比如:

  • 数组里有空值,跳过
  • 用户输入了错误内容,跳过本次输入
  • 循环到某个特定数字,跳过不处理
  • 读取文件时遇到空行,跳过

不需要处理 → 直接 continue → 不执行后面逻辑。

4. 嵌套循环中,跳过内层循环的某一步

continue 只影响自己所在的那一层循环,不会影响外层循环。

适合:

  • 打印表格时跳过某一列
  • 遍历二维数组时跳过某些位置
  • 多层循环里只跳过内部某一次迭代

六、在嵌套循环中使用

continue 语句默认只作用于它直接所在的那一层循环

如果你想在嵌套循环中跳出内层循环并继续外层循环的下一次迭代,需要使用 标签

// 定义一个标签,作用于外层 for 循环
OuterLoop:
for (int i = 1; i <= 3; i++)
{
Console.WriteLine($"外层循环: {i}");

for (int j = 1; j <= 3; j++)
{
if (i == 2 && j == 2)
{
Console.WriteLine(" 遇到内层 i=2, j=2,继续下一次外层循环");
continue OuterLoop; // 直接跳到外层循环的下一次迭代
}
Console.WriteLine($" 内层循环: j = {j}");
}
}
// 输出:
// 外层循环: 1
// 内层循环: j = 1
// 内层循环: j = 2
// 内层循环: j = 3
// 外层循环: 2
// 遇到内层 i=2, j=2,继续下一次外层循环 (内层 j=3 被跳过)
// 外层循环: 3
// 内层循环: j = 1
// 内层循环: j = 2
// 内层循环: j = 3

案例1:跳过数字 5

要求:循环输出 1-10,跳过数字 5

// 方法 1:for 循环
for(int i = 1; i <= 10;i++)
{
if( i == 5 ) continue;
Console.Write(i + " ");
}

// 方法 2:while 循环
int i = 0;
while(i <= 10)
{
i++;
if(i == 5) continue;
Console.Write(i + " ");
}

// 方法 3
int i = 1;
while (i <= 10)
{
if (i != 5) // 只有当 i 不等于5时才输出
{
Console.Write(i + " ");
}
i++; // i++ 放在 if 外面,确保总是执行
}
// 输出: 1 2 3 4 6 7 8 9 10

案例2:跳过数字7和7的倍数

要求:输出 1~30 之间的数字,跳过数字 7 和 7 的倍数

for(int i = 1; i <= 30; i++)
{
if( i == 7 || i % 7 == 0) continue;
Console.Write(i + " ");
}

案例3:跳过奇数

要求:输出1~20之间的偶数,跳过奇数

for(int i = 1; i <= 20; i++)
{
if(i % 2 == 1) continue;
Console.Write( i + " ");
}

%运算符的含义

含义:% 运算符用于取两个数的余数。

语法: a % b

返回值:a 除以 b 的余数

示例

Console.Write(5 % 3);
Console.Write( 8 % 2);
Console.Write(2 % 8);
Console.Write(3 % 2);

结论:

  1. 奇数模以 2 永远是1;
  2. 偶数模以 2 永远是 0;

案例 4:跳过元音字母

字符串:

programming

要求:

  • 跳过 a e i o u
  • 只输出其他字母

输出:

prgrmmng

参考答案

string str = "programming";

foreach (char c in str)
{
if ("aeiou".Contains(c))
{
continue;
}

Console.Write(c);
}

案例 5:用户输入验证(实战场景)

需求:循环接收用户输入数字,输入负数则跳过,输入 0 结束循环,打印所有正数。 考察点:do-while 循环 + continue + 交互输入

参考答案

int num;
Console.WriteLine("输入数字(0退出,负数自动跳过):");

do
{
num = Convert.ToInt32(Console.ReadLine());

// 负数:跳过,不打印
if (num < 0)
{
Console.WriteLine("负数已跳过!");
continue;
}
// 0:结束循环
if (num == 0)
{
break;
}
// 正数:打印
Console.WriteLine("有效数字:" + num);

} while (true);

案例 6:跳过C字母开头的单词

跳过当前元素的处理,直接获取集合中的下一个元素。

string[] names = { "Alice", "Bob", "Charlie", "David" };

foreach (string name in names)
{
if (name.StartsWith("C")) // 如果名字以 C 开头,跳过
{
continue;
}
Console.WriteLine(name); // 输出: Alice, Bob, David
}