内容正文:
流程控制结构(二)
[考纲要求]
考试内容:
循环结构的具体实现;注释语句。
知识点要求:
4.掌握循环结构for语句、while语句、do-while语句的应用。
5.理解跳转语句break语句、continue语句、return语句的应用。
6.掌握注释的类型和使用方法。
[课时安排]
2课时
[知识梳理]
一.循环结构
循环就是在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。Java 中提供了三种循环语句:for 语句、while 语句、do...while 语句。
二.循环结构-for循环
在Java语言中,for语句是一种循环控制结构,它允许我们重复执行一段代码多次。Java中的for语句有几种不同的形式。
1 基本for循环
基本for循环的语法如下:
for (初始化表达式; 布尔表达式; 更新表达式) {
// 要重复执行的代码块
}
执行过程如下:
(1)初始化表达式:在循环开始前执行一次,通常用于声明和初始化循环变量。
(2)布尔表达式:在每次循环开始前进行判断,如果为true,则执行循环体中的代码;如果为false,则退出循环。
(3)循环体:布尔表达式为true时执行的代码块。
(4)更新表达式:在每次循环体执行完毕后执行,通常用于更新循环变量。
2 增强for循环(for-each循环)
Java 5引入了增强for循环,专门用于遍历数组或集合类型(如List、Set等)。其语法如下:
for (声明语句 : 表达式) {
// 要重复执行的代码块
}
其中,声明语句用于声明一个局部变量,该变量的类型必须和数组或集合中元素的类型一致。表达式是要遍历的数组或集合。
增强for循环的例子:
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println("数字为:" + number);
}
这个例子中,number变量会依次取得数组numbers中的每个元素,并打印出来。
三.循环结构-while 循环
在Java中,while循环是一种基本的控制流语句,重复执行一段代码块,直到给定的条件为false。
while循环的语法
while (布尔表达式) {
// 要重复执行的代码块
}
执行过程
(1)布尔表达式:首先检查这个表达式,如果它为true,则执行循环体内的代码。如果为false,则跳过循环体,继续执行while循环之后的代码。
(2)循环体:布尔表达式为true时执行的代码块。
(3)在循环体执行完毕后,控制返回到while语句,并重新检查布尔表达式。如果它仍然为true,则循环继续;如果为false,则循环结束。
案例:实现循环打印1-5数字
int i = 1; // 初始化循环变量
while (i <= 5) { // 布尔表达式
System.out.println("i的值为:" + i); // 循环体
i++; // 更新循环变量
}
四.循环结构-do while 循环
Java还提供了do-while循环,至少执行一次循环体,然后根据条件判断是否继续执行。
语法如下:
do {
// 要执行的代码块
} while (布尔表达式);
do-while循环与while循环的不同之处在于,它先执行循环体,然后再检查条件。
do-while循环的示例:
int j = 1;
do {
System.out.println("j的值为:" + j);
j++;
} while (j <= 5);
在这个例子中,即使条件一开始就不成立,循环体也会至少执行一次。
五.break语句
Java 语句中提供了三种跳转语句,分别是break 、continue和 return 语句。
在Java中,break语句用于立即终止最内层的循环或开关(switch)语句,并跳出该循环或开关语句块,继续执行之后的代码。
break 语句的格式是:
break [标号标识符];
注意:
① 如果没有标号标识符,那么 break 语句会立即退出本层循环。
② 如果有标号标识符,那么 break 语句会立即退出标号标识符所标识的循环,执行该循环的下一条语句。
六.continue语句
在Java中,continue语句用于跳过当前循环迭代中的剩余代码,并立即开始下一次迭代。这与break语句不同,后者是直接退出整个循环。
语句格式为:
continue [标号标识符];
标号标识符同样可有可无。如果没有,则会立即结束本次循环,开始下一次循环; 如果有标号标识符,则会立即退出本次循环,开始执行标号所标识的新一轮循环。
七.return 语句
在Java中,return语句用于从当前方法返回控制,并可选地传递一个值回方法的调用者。
return语句的语法:
从方法返回一个值
return 表达式;
这里的表达式可以是任何类型的值,包括基本数据类型、对象、数组等。返回的类型必须与方法的返回类型兼容。
从方法返回void
如果你声明了一个返回类型为void的方法,那么你可以使用以下形式的return语句:
return;
八.注释
在Java中,注释是代码中用于解释或说明代码的部分,它们在编译时会被忽略。注释对于提高代码的可读性和可维护性非常有用。
Java支持三种类型的注释:
单行注释
单行注释以两个斜杠 // 开始,其后直到行末的所有内容都被视为注释。
多行注释
多行注释以 /* 开始,并以 */ 结束。它们可以跨越多行,但不能嵌套。
文档注释
文档注释以 /** 开始,并以 */ 结束。它们通常用于类、方法和字段定义之前,以生成API文档。
[限时练习]
1. 关于 Java 的 for 循环,以下描述错误的是( )
A. 可以用于循环遍历数组或集合
B. 可以指定循环次数
C. 必须使用三个表达式:初始化表达式、布尔表达式、更新表达式
D. 循环体可以执行 0 次或多次
【答案】C
【解析】for 循环的三个表达式是可选的,可以根据需要使用两个或一个表达式,甚至可以省略所有表达式。
2. 有一个整数数组 arr,以下代码片段的输出结果是( )
A. 1 2 3 4 5
B. 1 2
C. 1 2 3
D. 1 2 4 5
【答案】B
【解析】 循环会遍历数组直到找到值为 3 的元素,然后执行 break 语句跳出循环。因此,循环只执行了两次,输出 1 和 2。
3. 以下代码片段的输出结果是( )
A. 10
B. 21
C. 22
D. 30
【答案】B
【解析】 循环会累加 1 到 10 的整数,当累加和大于 20 时,执行 break 语句跳出循环。此时累加和为 21,因此输出 21。
4以下Java代码片段的输出是( )
A. 10
B. 25
C. 30
D. 55
【答案】B
【解析】 该for循环从0开始到9结束,但由于使用了continue关键字,当i为偶数时会跳过count += i;这一行代码。因此,只有当i为奇数时,count才会增加i的值。奇数序列为1, 3, 5, 7, 9,它们之和为25。
5. 以下Java代码片段执行后,变量sum的值是( )
A. 9 B. 18 C. 21 D. 45
【答案】B
【解析】 在这段代码中,while 循环从 i = 0 开始,每次 i 增加 1,直到 i < 10。
在循环中,判断 i 是否能被 3 整除,如果能,则将 i 加到 sum 中。
能被 3 整除的数有 0、3、6、9,但通常不希望将 0 加到 sum 中(具体是否加 0 取决于需求)。
若不加 0,sum 为 3 + 6 + 9 = 18;若加 0,sum 为 0 + 3 + 6 + 9 = 18。
所以,代码输出的是 18。
6. 在 Java 中,for 循环和 while 循环的区别在于执行顺序。( )
【答案】错误
【解析】for 循环和 while 循环在执行顺序上没有区别。它们都是先判断条件,再执行循环体。区别在于 for 循环的初始化表达式和更新表达式在循环开始前和循环体执行完毕后自动执行,而 while 循环需要手动编写。
7. 在 Java 中,增强 for 循环只能用于遍历数组。( )
【答案】错误
【解析】 增强 for 循环可以用于遍历数组或集合类型(如 List、Set 等)。它的优点是代码简洁,但缺点是无法直接获取元素的索引。
8. 在 Java 中,break 语句可用于跳出循环。( )
【答案】正确
【解析】 break 语句可以用于跳出循环或 switch 语句。它用于立即终止最内层的循环或 switch 语句,并跳出该循环或 switch 语句块,继续执行之后的代码。
9.在 Java 中,return 语句用于结束方法的执行,必须返回一个值。( )
【答案】错误
【解析】return 语句用于从当前方法返回控制,并可选地传递一个值回方法的调用者。它可以用于提前结束方法的执行,并将结果返回给调用者。
10.使用 for 循环输出 1 到 10 的所有素数。
【答案】
public class PrimeNumbers {
public static void main(String[] args) {
for (int i = 2; i <= 10; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println(i);
}
}
}
}
11.使用 while 循环输出斐波那契数列的前 10 个数字。
【答案】
public class Fibonacci {
public static void main(String[] args) {
int a = 1, b = 1;
int count = 0;
while (count < 10) {
System.out.println(a);
int temp = a + b;
a = b;
b = temp;
count++;
}
}
}
12.使用 do-while 循环输出 1 到 100 的所有水仙花数。
【答案】
public class NarcissisticNumbers {
public static void main(String[] args) {
int a, b, c;
int number = 100;
do {
a = number / 100;
b = (number % 100) / 10;
c = number % 10;
if (a * a * a + b * b * b + c * c * c == number) {
System.out.println(number);
}
number--;
} while (number >= 100);
}
}
13.使用 for 循环输出九九乘法表。
【答案】
public class MultiplicationTable {
public static void main(String[] args) {
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();
}
}
}
14. 使用 for 循环输出杨辉三角的前 10 行。
【答案】
public class PascalTriangle {
public static void main(String[] args) {
int[][] triangle = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
triangle[i][j] = 1;
} else {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
System.out.print(triangle[i][j] + " ");
}
System.out.println();
}
}
}
15. 使用 while 循环输出 100 到 200 之间的所有质数。
【答案】
public class PrimeNumbers {
public static void main(String[] args) {
int number = 100;
while (number <= 200) {
boolean isPrime = true;
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
System.out.println(number);
}
number++;
}
}
}
16 使用 do-while 循环输出 1 到 100 之间的所有偶数,并将其累加。
【答案】
public class EvenNumbers {
public static void main(String[] args) {
int sum = 0;
int number = 2;
do {
System.out.println(number);
sum += number;
number += 2;
} while (number <= 100);
System.out.println("偶数和为:" + sum);
}
}
17.使用 for 循环输出 1 到 100 之间所有能被 3 或 5 整除的数字。
【答案】
public class DivisibleNumbers {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 || i % 5 == 0) {
System.out.println(i);
}
}
}
}
[归纳小结]
学科网(北京)股份有限公司
$$