程序控制结构(中)
1.1🍑for循环
- for 关键字,表示循环控制
- for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
- 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码
- 如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省略
for循环流程图
代码实现
public class For01 {
public static void main(String[] args) {
int i = 0;
for(i = 1 ; i<=10 ; i++){
System.out.println("Hello World");
}
}
}
输出结果
1.2🍖for循环细节
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
- 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代
语句,中间用逗号隔开。
代码实现
public class ForDetail {
public static void main(String[] args) {
// 1) 循环条件是返回一个布尔值的表达式
//2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
// 这种写法也是可以的
int i = 1;
for (; i<=10 ; ){
System.out.println("Hello"+i);
i++;
}
System.out.println("i = "+i);
// for的无限循环
// for (;;)
// {
// System.out.println("loop...");
// }
//3)循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,
//循环变量迭代也可以有多条变量迭代
//语句,中间用逗号隔开。
int count = 3;
for (int a = 0 , j = 0 ; a < count ; a++,j+=2){
System.out.println("a = "+a+" j = "+j); // 0,0 | 1,2 | 2,4 |
}
}
}
运行结果
1.3🥗for循环练习
练习题
打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和
public class ForExercise {
public static void main(String[] args) {
//打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和.[化繁为简,先死后活]
//1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成 编程 = 思想 --练习-> 代码
//2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值
//
//思路分析
//打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和
//化繁为简
//(1) 完成 输出 1-100 的值
//(2) 在输出的过程中,进行过滤,只输出 9 的倍数 i % 9 ==0
//(3) 统计个数 定义一个变量 int count = 0; 当 条件满足时 count++;
//(4) 总和 , 定义一个变量 int sum = 0; 当条件满足时累积 sum += i;
//先死后活
//(1) 为了适应更好的需求,把范围的开始的值和结束的值,做出变量
//(2) 还可以更进一步 9 倍数也做成变量 int
int i = 0;
for (i = 9 ; i<=100 ; i+=9){
System.out.println("i = "+i);
}
System.out.print("\n");
// int j = 0;
// int count = 0;
// for (j = 1 ; j<=100 ; j++){
// if (j%9==0){
// count++;
// System.out.println("j = "+j);
// }
// }
// System.out.println("count = "+count);
// 从静态转换成动态的写法,推荐!!!
int j = 0;
int count = 0; // 计算个数
int start = 1; // 起始位置
int end = 100; // 结束位置
int t = 9; // 倍数
for (j = start ; j<=end ; j++){
if (j%t==0){
count++;
System.out.println("j = "+j);
}
}
System.out.println("count = "+count);
}
}
运行结果
练习题
代码实现
public class ForExercise02 {
public static void main(String[] args) {
// 输出以下表达式
// 0 + 5 = 5
// 1 + 4 = 5
// 2 + 3 = 5
// 3 + 2 = 5
// 4 + 1 = 5
// 5 + 0 = 5
int i = 0;
int j = 0;
int s = 0;
for (i = 0, j = 5 ; i<=5 ; i++,j--){
s = i+j;
System.out.println(i+" + "+j+" = "+s);
}
int n = 5;
for (int x = 0 ; x<=n ;x++ ){
System.out.println(x+" + "+(n-x)+" = "+n);
}
}
}
运行结果
2.1🍒while循环
代码实现
public class While01 {
public static void main(String[] args) {
int i = 1;
while(i<=10){
System.out.println("HelloWorld");
i++;
}
System.out.println(i);
System.out.println("while循环结束...");
}
}
运行结果
2.2🍑while循环细节
- 循环条件是返回一个布尔值的表达式
- while 循环是先判断再执行语句
2.3🥮while循环练习题
public class WhileExercise {
public static void main(String[] args) {
// 1) 打印 1—100 之间所有能被 3 整除的数 [使用 while]
int i = 1;
int count = 0;
while(i<=100){
if (i%3==0){
count++;
System.out.println(i);
}
i++;
}
System.out.println("count = "+count);
System.out.println();
// 2) 打印 40—200 之间所有的偶数 [使用 while, 课后练习]代码
int n = 40;
int s = 0;
while(n<=200){
if (n%2==0){
s++;
System.out.println(n);
}
n++;
}
System.out.println("s = "+s);
}
}
输出结果
3.1🧁do_while循环
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
- do while 是关键字
- 也有循环四要素, 只是位置不一样
- 先执行,再判断,也就是说,一定会至少执行一次
- 最后 有一个 分号 ;
3.2🍄do_while循环细节
- 循环条件是返回一个布尔值的表达式
- do…while 循环是先执行,再判断, 因此它至少执行一次
public class DoWhile01 {
public static void main(String[] args) {
int i = 1;
do{
System.out.println("Hello"+i);
i++;
}while (i<=10);
System.out.println("退出了,do...while语句");
}
}
3.3🌭do_while循环练习题
练习题
- 打印 1—100 [学生做]
- 计算 1—100 的和 [学生做]
int i = 1;
int s = 0;
do{
s+=i;
System.out.print(i+" ");
i++;
}while (i<=100);
System.out.println();
System.out.println("s = "+s);
运行结果
练习题
int j = 1;
int count = 0;
do{
if (j%5==0 && j%3!=0){
count++;
}
j++;
}while(j<=200);
System.out.println("count = "+count);
运行结果: count = 27
练习题
如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止
代码实现
import java.util.Scanner;
public class DoWhileExercise02 {
public static void main(String[] args) {
// 如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止
char answer = ' ';
Scanner scanner = new Scanner(System.in);
do{
System.out.println("还钱吗?<y|n>");
answer = scanner.next().charAt(0);
System.out.println("他的回答是"+answer);
}while(answer != 'y');
}
}
运行结果
未完待续…