🌟 想系统化学习 Java 编程?看看这个:[编程基础] Java · 学习手册
反复做一件相同的事情,称为循环。通过循环语句,我们可以多次执行相同的语句而不需要重复编写代码。Java 中主要有三种循环语句,分别是 while
循环、do ... while
循环 和 for
循环。这三种循环语句对条件表达式的要求不同,语法也不同,下面分别进行介绍。
0x01:循环结构 — while 循环
0x0101:while 循环 — 概念解析
while 循环是 Java 中比较简单的循环语句,它通过条件表达式控制是否需要重复执行循环体中的语句块。while 循环的语法格式如下:
while (循环条件) {
循环体;
}
在循环刚开始时,Java 会判断一次 “循环条件” 是否满足,如果满足,就执行内部 “循环体” 的代码。当执行到循环的末尾 }
时,它又会去判断一次 “循环条件” 看看是否满足,如果满足,继续执行 “循环体” 的代码,若不满足,则退出循环,执行后续的代码。
while 循环结构的流程图如下图所示:
0x0102:while 循环 — 案例演示
假设我们现在有这么一个需求,就是让用户输入一个正整数 n,然后程序将计算从 1 开始到 n 结束的所有正整数之和(为了打印好看,笔者还带上了前面的分支结构):
import java.util.Scanner;
public class TestVar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入 n: ");
int end = sc.nextInt(); // 获取用户输入的 n
int start = 1, result = 0; // start 用来记录当前数的位置; result 用来保存结果
while (start <= end) {
if (start != end) {
System.out.print(start + " + ");
} else { // 当打印最后一个数时,跟着的符号变成 = 号
System.out.print(start + " = ");
}
result += start; // 进行累加操作
start++; // 每次循环末尾 start + 1,防止死循环
}
System.out.print(result);
}
}
0x02:循环结构 — do ... while 循环
0x0201:do ... while 循环 — 概念解析
do ... while 循环结构会先执行一次循环体,然后再做判断,看条件是否满足。若条件满足,则继续执行循环体内的代码块,否则,退出循环。do ... while 循环的语法格式如下:
do {
循环体;
} while (循环条件);
do ... while 循环结构的流程图如下图所示:
0x0202:do ... while 循环 — 案例演示
假设我们现在有这么一个需求,用户输入一个正整数 n,我们想求从 1 加到多少,其结果会大于等于我们输入的 n:
import java.util.Scanner;
public class TestVar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入 n: ");
int n = sc.nextInt(); // 获取用户输入的 n
int start = 1, result = 0; // start 用来记录当前数的位置; result 用来保存结果
do {
result += start; // 当前结果 + start
if (result < n) {
System.out.print(start + " + ");
} else {
System.out.print(start + " = " + result + " >= " + n);
}
start++; // strat 每轮循环会 + 1
} while(result < n);
}
}
0x03:循环结构 — for 循环
0x0301:for 循环 — 概念解析
for 循环语句是最常用的循环语句,一般用在循环次数已知的情况下。for 循环语句的语法格式如下:
for (初始化表达式; 循环条件; 操作表达式) {
循环体;
}
for 循环的执行流程如下:
-
执行 “初始化表达式”。
-
判断 “循环条件‘ 是否为 true,为 true 则执行 ”循环体“ 内的内容,否则就退出循环。
-
执行 ”循环体“ 内的代码。
-
执行 ”操作表达式“ 的代码。
-
重复执行 2 - 4 步。
for 循环对应的流程图如下所示:
0x0302:for 循环 — 案例演示
假设我们有这么一个需求,让你计算从 1 加到 10 的所有数字之和,我们可以这么写程序:
public class TestVar {
public static void main(String[] args) {
int result = 0;
for (int i = 1; i <= 10; i++) {
result += i;
}
System.out.println(result);
}
}
0x04:循环嵌套
除了 if 语句的嵌套,我们循环语句也允许嵌套,我们称之为循环嵌套。for 循环中可以嵌套 for 循环,while 循环中可以嵌套 while 循环,for 和 while 循环也可以相互嵌套。总之,你有需要,随你咋套。
下面我们使用循环嵌套打印一个 ”乘法口诀表“:
public class TestVar {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
// 循环嵌套,for 循环中又嵌套了一个循环
for (int j = 1; j <= 9; j++) {
if (j <= i) {
System.out.print(i + " x " + j + " = " + (i * j) + "\t");
}
}
System.out.println();
}
}
}
0x05:跳转语句
在循环程序中,如果条件一直成立,程序就会一直执行下去,直到不满足条件,才会退出循环。但是如果想中途退出循环(for 循环结束重复之前,while 循环符合结束条件之前),我们该怎么办呢?此时,我们就可以通过 break
和 continue
关键字来实现这一需求。
0x0501:break — 退出循环
使用 break 语句可以完全中止循环。该语句用法十分简单,只要放到循环中你想提前跳出的部分即可。break 语句一般会和 if 语句搭配使用,在循环体的 if 语句中使用 break,可以直接跳出循环。
来看下面这个案例,我们有一个数数程序,我想让他在数到 10 的时候停止:
public class TestVar {
public static void main(String[] args) {
for (int i = 0; true; i++) {
System.out.println(i);
if (i == 10) {
break; // 当打印到 10 时退出循环
}
}
}
}
0x0502:continue — 中止本次循环
与 break 相比,continue 语句只能中止本次循环,提前进入到下一次循环中。也就是说,continue 语句不会完全退出循环体。与 break 语句类似,continue 语句一般也会在循环中与 if 语句搭配使用。
同样是一个数数程序,我想当程序数到 5 的时候,跳过:
public class TestVar {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
if (i == 5) {
continue; // 跳过本次循环, 跳到 i++ 处
}
System.out.println(i);
}
}
}