一 for介绍
顺序结构的程序语句只能被执行一次。
如果想要同样的操作执行多次,就需要使用循环结构。
语法:
for(循环变量初始化; 循环条件; 循环变量迭代) {
循环操作(可以多条语句);
}
- 最先执行循环变量初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
- 然后,检测循环条件的值(循环条件是一个布尔表达式)。如果为 true,循环操作被执行。如果为false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环变量迭代。
- 再次检测布尔表达式。循环执行上面的过程。
上面可以看到,循环操作比循环变量迭代先执行的。
二 for循环细节
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方, 但是两边的分号不能省略。
- 循环初始值可以有多条初始化语句, 但要求类型一样, 并且中间用逗号隔开, 循环变量迭代也可以有多条变量迭代语句, 中间用逗号隔开。
public static void main (String[] args) {
// 输出10次Hello, World!
for (int i = 1; i <= 10; i++){
System.out.println("Hello, World!"+i);
}
// 细节1:循环条件是返回一个布尔值的表达式
// 细节2:for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方, 但是两边的分号不能省略。
int i = 1; // 这种方式适用于循环体中的变量需要在循环体外使用的情况
for (; i <= 10; ){
System.out.println("Hello, World!"+i);
i++;
}
// 细节3:循环初始值可以有多条初始化语句, 但要求类型一样, 并且中间用逗号隔开, 循
// 环变量迭代也可以有多条变量迭代语句, 中间用逗号隔开。
int count = 3;
for (int j = 0, k = 0; j <= count ; j++, k+=2){
System.out.println("j="+j+" k="+k);
}
// 无限循环
// for (;;){} 也是一个死循环
// 适用于服务器端程序, 一直监听客户端请求
// for (;;){
// System.out.println("ok");
// }
}
三 for循环编程思想
化繁为简:将复杂需求,拆分成简单的需求,逐步完成
先死后活:先写死代码,再逐步优化
public static void main (String[] args) {
// 需求:打印1-100之间所有是9的倍数的整数
// 思路分析
// 化繁为简:
// 定义一个变量j,用于遍历1-100之间的所有整数
// 定义一个变量i,用于存储9
// 判断j是否是9的倍数,如果是,打印j
// 定义一个变量 count ,用于统计9的倍数的个数
// 每次找到9的倍数,count++
// 定义一个变量 sum,用于存储9的倍数的和
// 每次找到9的倍数,sum += j
// 先死后活:
// 为了更灵活的配置,将输出范围 起始值/结束值/除数和被除数 都定义成变量
int i = 5;
int j ;
int count = 0;
int sum = 0;
int start = 31;
int end = 200;
for (j = start ; j <= end; j++) {
if (j % i == 0) {
System.out.println("j="+j);
count++;
sum += j;
}
}
System.out.println("count="+count);
System.out.println("sum="+sum);
}
public static void main (String[] args) {
// 需求: 完成下面的表达式输出:
/**
* 0+5=5
* 1+4=5
* 2+3=5
* 3+2=5
* 4+1=5
* 5+0=5
*/
// 思路分析
// 化繁为简:
// 1. 先输出 0~5
// 2. 后面的是 + (5 - i) = 5
// for (int i = 0; i <= 5; i++){
// System.out.println(i + "+" + (5 - i) + "=5");
// }
// 先死后活:
// 把上述的布尔表达式 i <= 5 里面的 5 设为一个变量 int n = 5;
// 好处是只要改一个地方,整个代码都会跟着改
int n = 10;
for (int i = 0; i <= n; i++){
System.out.println(i + "+" + (n - i) + "=" + n);
}
}