1) 为什么需要for循环结构
a) 我们在上一讲学习了while和do…while循环,可以让我们在编码过程中将一些重复执行的代码采用循环结构进行描述,可以大大简化编码工作,使代码更加简洁,易读。在JAVA的循环结构中不仅有while和do…while循环,还有for循环结构。
1. while循环代码示例:在上一讲中我们用while循环解决了在控制台输出100次:“我是最棒的!”
public class Demo003 {
public static void main(String[] args) {
int i = 1;
while (i <= 100) {
System.out.println("我是最棒的!");
i = i + 1;
}
}
}
a) 通过观察,我们可以发现:循环的次数是固定的:100次。
2. for循环代码示例:我们用for循环来解决这个问题:
public class Demo002 {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println("我是最棒的!");
}
}
}
3. 两种解决方式可以得到相同的效果。
b) 使用for循环的原因:用for循环解决有固定循环次数的问题时,代码更加清晰,简洁,而且不容易出错。
2) 什么是for循环
a) 循环结构分析:
1. 循环结构的主要作用是反复执行一段代码,直到设置的条件不再满足。
2. 循环结构四个组成部分:
⑴初始部分:设置循环的初始状态。比如:我们设置记录循环次数的变量i为0;
⑵循环体:重复执行的代码,即输出“我是最棒的!”;
⑶迭代部分:下一次循环开始前要执行的部分,在while循环中它作为循环体的一部分。比如:使用“i = i + 1;”进行循环次数的累加;
⑷循环条件:判断是否继续循环的条件。比如:使用“i < 100”判断循环次数是否已经达到100次。
3. 结论:在for循环结构中,这几个部分同样必不可少,不然循环就会出现错误。
b) for循环的语法
for(表达式1;表达式2;表达式3){
//循环执行的语句
}
c) 语法讲解:
1. for是这个循环结构的关键字
2. 表达式1:是赋值语句
功能:循环结构的初始部分,为循环变量赋初值
3. 表达式2:条件语句
功能:循环结构的循环条件,只有条件为true,循环体才能执行
4. 表达式3:赋值语句,通常使用“++”或“--”运算符
功能:循环结构的迭代部分,通常用来修改循环变量的值
5. for关键字后面小括号中的3个表达式必须用“;”(分号)隔开。
6. 执行顺序:
1) 执行初始部分:int i = 0;(循环开始时执行一次,以后不再执行);
2) 执行循环条件判断:i < 100 ;
3) 根据条件判断的结果:
a. 如果为true,执行循环操作
b. 如果为false,退出循环,后面步骤不再执行
4) 执行迭代部分,改变循环变量的值:i++;
5) 重复第2、3、4步,依次进行,直到退出for循环结构。
d) for循环特点
1. 先判断,后执行
2. 循环次数固定(也可以解决循环次数不固定的问题,不过一般用于解决循环次数固定的问题)
3. 简洁明了
e) for循环作用
1. 解决需要多次执行操作的问题,用于次数固定的循环。提高工作效率和减少代码编写量。
f) for循环使用场合
1. 在解决有固定次数的循环问题时,使用for循环结构。
3) for循环结构的使用
a) 通过示例来学习如何使用for循环
循环录入某学员S1的5门课成绩,计算平均分
b) 使用for循环结构的步骤
1. 分析循环条件和循环操作
2. 套用for语法写出代码
3. 检查循环是否能够退出
c) 分析:
1. 循环次数:5
2. 循环条件:循环的次数不足5,继续循环
3. 循环操作:录入成绩,计算成绩之和
d) 代码:
import java.util.*;
/**
* Demo003.java 演示for循环,录入5门课成绩,并计算平均值
*/
public class Demo003 {
public static void main(String[] args) {
int score; // 每门课的成绩
int sum = 0; // 成绩之和
int avg; // 平均分
Scanner input = new Scanner(System.in);
System.out.print("输入学生姓名: ");
String name = input.next(); // 输入姓名
for (int i = 0; i < 5; i++) { // 循环5次录入5门课成绩
System.out.print("请输入5门功课中第" + (i + 1) + "门课的成绩: ");
score = input.nextInt();
sum = sum + score;
}
avg = sum / 5; // 计算平均分
System.out.println(name + "的平均分是:" + avg);
}
}
e) 代码分析:
1. 在初始部分:声明循环变量i,并初始化为0,用来记录循环次数
2. 在条件判断部分:循环条件:i < 5
3. 在迭代部分:对循环变量进行迭代:i++
4. 在循环操作部分(循环体):要进行的循环操作
f) 执行过程:
1. 执行初始部分:int i = 0
2. 判断循环条件:如果为true,执行一次循环体
3. 循环体结束后,执行迭代部分:i++
4. 再判断循环条件是否成立,如果为true,继续执行循环体
5. 直到循环条件变成false,退出循环
g) 小结:
1. 在for循环结构中:表达式1只执行一次,表达式2和表达式3则可能执行多次,循环体可能多次执行,也可能一次也不执行。
4) for结构的其他形式
a) 输出如图所示加法表
b) 分析:
1. 这是一个根据输入的整数值来输出一张加法表
2. 循环初始化:i = 0;j = 输入值
3. 循环条件:i <= 输入值
4. 循环操作:计算i + j
5. 循环变量的改变:i++,j--
代码示例:
import java.util.*;
/**
* Demo004.java 演示for循环的复杂形式
*/
public class Demo004 {
public static void main(String[] args) {
int i, j;
Scanner input = new Scanner(System.in);
System.out.print("请输入一个值: ");
int val = input.nextInt();
System.out.println("根据这个值可以输出以下加法表: ");
for (i = 0, j = val; i <= val; i++, j--) {
System.out.println(i + " + " + j + " = " + (i + j));
}
}
}
c) 特点:
1. 表达式1中可以声明多个同一类型的变量并赋值,用“,”隔开
2. 表达式3可以是用“,”隔开的多个表达式,运算顺序从左到右
5) for循环常见问题
a) 使用for循环要注意的几个问题:
for(<初始化循环变量> ; <循环条件> ; <修改循环变量的值>) {
<循环体语句>;
}
1. 关键字for后面小括号中的两个“;”都不可以省略。
2. 关键字for后面小括号中除了两个“;”以外都可以省略。
3. 如果表达式1省略,循环变量的初始值在for语句之前由赋值语句取得
b) 缺少初始化循环变量
for(;i<10; i++){
System.out.println("这是 "+ i);
}
1. 这段代码没有对变量 i 进行初始化,会出现编译错误
c) 缺少条件判断语句
for(int i=0;; i++){
System.out.println("这是 "+ i);
}
1. 编译正确,但是缺少循环条件,造成死循环
d) 缺少迭代部分
for(int i=0;i<10;){
System.out.println("这是 "+ i);
i++;
}
1. 编译通过,但是循环变量的值无变化,造成死循环
2. 省略表达式3,在循环体内应设法改变循环变量的值以结束循环
e) 缺少初始化循环变量、条件判断语句、迭代部分
for(;;){
System.out.println("这是测试");
}
1. 表达式全省略,无条件判断,循环变量无改变,应在循环体内设法结束循环,否则会造成死循环
|