JAVA20231130
121122123124125循环控制for
基本语法:
for(循环变量初始化;循环变量;循环变量迭代){
循环操作(可以多条语句);
}
说明:
- for关键字,表示循环控制
- for有四要素:(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
- 循环操作,这里可以有多条语句,也就是我们要循环执行的代码
- 如果 循环操作(语句)只有一条语句,可以省略{},建议不要省略
执行流程分析:
注意事项和细节说明:
- 循环条件是返回一个布尔值的表达式
- for(;循环判断条件;)中的初始化和变量迭代可以写到其他地方,但是两边的分号不能省略
- 循环初始值可以有多条初始化语句,但要求类型一样,而且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
for循环练习题:
126127128循环控制while
基本语法:
循环变量初始化
whlie(循环条件){
循环体(语句);
循环变量迭代;
}
说明:
while循环也有四要素,只是四要素放的位置和for不一样
循环执行流程分析:
注意事项和细节说明:
- 循环条件是返回一个布尔值的表达式
- while循环是先判断再执行语句
while练习题:
129130131132do…while循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
说明:
- do while是关键字
- 也有循环四要素,只是位置不一样
- 先执行,在判断,也就是说,一定会至少执行一次
- 注意最后while有一个分号
循环执行流程分析图:
注意事项和细节说明:
- 循环条件是返回一个布尔值的表达式
- do…while循环是先执行,再判断,因此它至少执行一次
do…while循环练习题:
133134135136多重循环控制
介绍:
- 将一个循环放在另一个循环体内,经形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环(建议一般使用两层,最多不要超过3层,否则代码可读性很差)
- 实质上,嵌套循环就是把内层循环当成外层外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环
- 设外层循环次数为m次,内层为n次,则内层循环中的循环语句需要执行m*n次
应用实例:
经典的打印金字塔:
public class Stars {
//编写一个 main 方法
public static void main(String[] args) {
/*
*
* *
* *
********
思路分析
化繁为简
1. 先打印一个矩形
*****
*****
*****
*****
*****
2. 打印半个金字塔
* //第 1 层 有 1 个*
** //第 2 层 有 2 个*
*** //第 3 层 有 3 个*
**** //第 4 层 有 4 个*
***** //第 5 层 有 5 个*
3. 打印整个金字塔
* //第 1 层 有 1 个* 2 * 1 -1 有 4=(总层数-1)个空格
*** //第 2 层 有 3 个* 2 * 2 -1 有 3=(总层数-2)个空格
***** //第 3 层 有 5 个* 2 * 3 -1 有 2=(总层数-3)个空格
******* //第 4 层 有 7 个* 2 * 4 -1 有 1=(总层数-4)个空格
********* //第 5 层 有 9 个* 2 * 5 -1 有 0=(总层数-5)个空格
4. 打印空心的金字塔 [最难的]
* //第 1 层 有 1 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 2 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 3 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
* * //第 4 层 有 2 个* 当前行的第一个位置是*,最后一个位置也是*
********* //第 5 层 有 9 个* 全部输出*
先死后活
5 层数做成变量 int totalLevel = 5;
//小伙伴 技术到位,就可以很快的把代码写出
*/
int totalLevel = 20; //层数
for(int i = 1; i <= totalLevel; i++) { //i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for(int k = 1; k <= totalLevel - i; k++ ) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j = 1;j <= 2 * i - 1;j++) {
//当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
if(j == 1 || j == 2 * i - 1 || i == totalLevel) {
System.out.print("*");
} else { //其他情况输出空格
System.out.print(" ");
}
}
//每打印完一层的*后,就换行 println 本身会换行
System.out.println("");
}
}
}
137138139140跳转控制语句break(用来终止循环)
引例:
随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次? 提示使用 (int)(Math.random() * 100) + 1 思路分析: 循环,但是循环的次数不知道. -> break ,当某个条件满足时,终止循环 通过该需求可以说明其它流程控制的必要性,比如 break
基本介绍:
break语句用于终止某个语句块的执行,一般使用在switch或者循环[for,whlie,do…whlie]
基本语法:
{
…
break;
…
}
快速入门:
注意事项和细节说明:
-
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块
-
标签的基本使用
-
break语句可以指定退出哪层
-
label1是标签,名字由程序员指定
-
break后指定到哪个label就退出到哪里
-
在实际开发中,尽量不要使用标签
-
如果没有指定break标签,默认退出最近的循环体