什么是循环?
- 循环不是无休止进行的,满足一定条件的时候循环才会继续,称为“循环条件”。循环条件不满足时,循环退出;
- 循环结构是反复进行相同的或类似的一系列操作,称为“循环操作”。
- 循环条件一直为true会造成无限循环【死循环】,我们正常业务编程中应该避免死循环。会影响程序性能造成程序卡死崩溃。
死循环
while(true){
//代码
}
while 循环
- while是最基本的循环
语法
while(布尔表达式){
//循环内容
}
示例
//输出1~100
int i = 1;//初始化条件
while (i <= 100){
//条件判断
System.out.println(i);//循环体
i++;//迭代
}
计算1 + 2 + 3 + …… + 100=?
int i = 0;
int sum = 0;//计算和
while (i <= 100){
sum += i;//等效sum = sum + i;
i++;//每次循环i+1
}
System.out.println(sum);
while循环结构执行顺序:
(1)声明并初始化循环变量
(2)判断循环条件是否满足,如果满足则执行循环操作;否则退出循环。
(3)执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环。
使用while循环结构解决问题的步骤:
- 分析循环条件和循环操作
- 套用while语法写出代码
- 检查循环能否退出
do……while 循环
语法
do{
//代码
}whle(条件);
示例
do {
//先执行一次代码
System.out.println(i);
i++;
}while (i <= 100);//再判断条件
while和do-while的区别
- 语法不同
- 次序不同
- while先判断,后执行
- do-while至少执行一次再判断
初始情况不满足时
- while循环一次都不会执行
- do-while循环任何情况都至少执行一次
for 循环
- for循环是最有效最灵活的循环结构
- for循环的执行次数是在执行前就确定的
语法及执行流程
for(1.初始部分;2.条件判断;4.迭代部分){
3.循环体//循环体被执行
}
- 初始部分:设置循环的初始状态
- 条件判断:判断是否继续循环的条件
- 循环体:重复执行的代码
- 迭代部分:下次循环开始前要执行的部分
示例
int a = 1;//初始化条件
while (a<=100){
//条件判断
System.out.println(a);//循环体
a+=2;
}
System.out.println("while循环结束");
//初始化值;条件判断;迭代
for(int i = 1;i <= 100;i++){
System.out.println(i);
}
System.out.println("for循环结束!");
- 练习1:计算0到100之间的奇数和偶数的和
int oddSum = 0;//存放奇数和
int evenSum = 0;//存放偶数和
for (int i = 0;i < 100; i++){
if(i%2 != 0){
//奇数
oddSum+=i;
}else{
//偶数
evenSum+=i;
}
}
System.out.println("奇数的和:" + oddSum);
System.out.println("偶数的和:" + evenSum);
- 练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出三个
for (int i = 1;i<= 1000;i++){
if (i % 5 == 0){
System.out.print(i + "\t");
}
if (i%(5*3)==0){
//换行
System.out.println();
//System.out.println("\n");
}
}
- 练习3:打印九九乘法表
- 先打印第一列
- 我们把固定的1再用一个循环包起来
- 去掉重复项,j <= i
- 调整样式
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + i*j + "\t");
}
System.out.println();//换行
}
增强for循环
- Java5引入的主要用于数组或集合的增强型for循环
- 这里我们先见个面,之后数组我们重点使用
语法
for(声明语句:表达式){
//代码
}
练习
- 打印三角形
for (int i = 1;i <= 5;i++){
//代表5行
//打印了半个空白三角形
for (int j = 5;j >= i; j--){
System.out.print(" ");
}
for (int j = 1;j <= i; j++){
System.out.print("*");
}
for (int j = 1;j < i; j++){
System.out.print("*");
}
System.out.println();//换行
}
break语句
- break用于强制退出循环
- break常用于switch结构和循环结构中
for(int i=0;i<10;i++){
//跑10圈
if(i == 6){
//第6圈坚持不下去了
break;//退出比赛
}
System.out.println(i);
}
continue语句
- 跳过某次循环执行下次循环
- 只能用在循环语句中
int i = 0;
int count = 0;
while (i<100){
i++;
//能整除10的数不输出
if (i % 10 == 0){
continue;//跳过这个循环开始执行下一次
}else{
count++;//记录输出了几个数
}
System.out.print(i + "\t");
if (count % 9 == 0){
//输出九个数字换一次行
System.out.println();
}
}
break和continue的区别:
- break直接结束循环结构
- continue结束某次循环开始下一次