循环结构
- 前言
- 一、Java中的循环
- 1.1 for循环
- 1.2 while循环
- 1.3 do-while循环
- 1.4 foreach循环
- 二、循环嵌套
- 三、循环跳出语句
- 3.1 break语句
- 3.2 continue语句
前言
循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。所有流行的编程语言中都有循环语句。Java 中采用的循环语句主要有 for、while、和do-while 。另外 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的。for-each 并不是一个关键字。
一、Java中的循环
1.1 for循环
语法:
for(条件表达式1;条件表达式2;条件表达式3) {
语句块;
}
for 循环中 3 个条件表达式的含义如表 1-1 所示。
表达式 | 形式 | 功能 | 举例 |
条件表达式 1 | 赋值语句 | 循环结构的初始部分,为循环变量赋初值 | int i=1 |
条件表达式 2 | 条件语句 | 循环结构的循环条件 | i>40 |
条件表达式 3 | 迭代语句,通常使用 | ++ 或 – 运算符 | 循环结构的迭代部分,通常用来修改循环 |
for 关键字后面括号中的 3 个条件表达式必须用“;”隔开。for 循环语句执行的过程为:首先执行条件表达式 1 进行初始化,然后判断条件表达式 2 的值是否为 true,如果为 true,则执行循环体语句块;否则直接退出循环。最后执行表达式 3,改变循环变量的值,至此完成一次循环。接下来进行下一次循环,直到条件表达式 2 的值为 false,才结束循环,其运行流程如图 1-1 所示。
图 1-1 for循环执行流程图
**案例:** 计算 5 的阶乘。
public static void main(String[] args) {
int result = 1;
for (int number = 1; number <= 5; number++) {
result *= number;
}
System.out.print("5 的阶乘结果是:" + result); // 输出"5的阶乘结果是:120"
}
1.2 while循环
语法:
while(条件表达式) {
语句块;
}
while 循环语句的执行流程如图 1-2 所示。
图 1-2 while 循环语句执行流程图
案例: 使用 while 语句计算 10 的阶乘。
public static void main(String[] args) {
int i = 1;
int n = 1;
while(i <= 10) {
n=n*i;
i++;
}
System.out.println("10的阶乘结果为:"+n);
}
1.3 do-while循环
语法:
do {
语句块;
}while(条件表达式);
以上语句的执行过程是,首先执行一次循环操作,然后再判断 while 后面的条件表达式是否为 true,如果循环条件满足,循环继续执行,否则退出循环。while 语句后必须以分号表示循环结束,其运行流程如图 1-3 所示。
图 1-3 do-while 循环语句的执行流程
案例: 编写一个程序,计算 10 的阶乘。使用 do-while 循环实现。
public static void main(String[] args) {
int number = 1,result = 1;
do {
result*=number;
number++;
}while(number <= 10);
System.out.print("10阶乘结果是:"+result);
}
1.4 foreach循环
语法:
for(类型 变量名:集合) {
语句块;
}
其中,“类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一个元素,其执行流程如图 1-4 所示。
图 1-4 foreach 循环语句的执行流程图
案例: 假设有一个数组,采用 for 语句遍历数组的方式如下:
// 声明并初始化数组
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
System.out.println("----for----");
// for语句
for (int i = 0; i < numbers.length; i++) {
System.out.println("Count is:" + numbers[i]);
}
二、循环嵌套
Java 允许循环嵌套。如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环。嵌套循环既可以是 for循环嵌套 while 循环,也可以是 while 循环嵌套 do-while 循环 …… 即各种类型的循环都可以作为外层循环,也可以作为内层循环。这里以for循环嵌套为例,嵌套循环的执行流程如图 2-1 所示。
案例: 使用嵌套循环输出九九乘法表
public static void main(String[] args) {
System.out.println("乘法口诀表:");
// 外层循环
for (int i = 1; i <= 9; i++) {
// 内层循环
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j * i + "\t");
}
System.out.println();
}
}
三、循环跳出语句
3.1 break语句
break 用于完全结束一个循环,跳出循环体。某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为 false 时才退出循环。此时,可以使用 break 来完成这个功能。
案例: 小明参加了一个 1000 米的长跑比赛,在 100 米的跑道上,他循环地跑着,每跑一圈,剩余路程就会减少 100 米,要跑的圈数就是循环的次数。但是,在每跑完一圈时,教练会问他是否要坚持下去,如果回答 y,则继续跑,否则表示放弃。
public static void main(String[] args) {
Scanner input = new Scanner(System.in); // 定义变量存储小明的回答
String answer = ""; // 一圈100米,1000米为10圈,即为循环的次数
for (int i = 0; i < 10; i++) {
System.out.println("跑的是第" + (i + 1) + "圈");
System.out.println("还能坚持吗?"); // 获取小明的回答
answer = input.next(); // 判断小明的回答是否为y?如果不是,则放弃,跳出循环
if (!answer.equals("y")) {
System.out.println("放弃");
break;
}
// 循环之后的代码
System.out.println("加油!继续!");
}
}
3.2 continue语句
它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。
下面看一个示例,代码如下:
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < numbers.length; i++) {
if (i == 3) {
continue;
}
System.out.println("Count is: " + i);
}
注意:continue 语句只能用在 while 语句、for 语句或者 foreach 语句的循环体之中,在这之外的任何地方使用它都会引起语法错误。