学习目标:
**1.掌握while语句、do…while语句、for循环语句的使用
2.掌握break语句和continue语句的使用
3.理解嵌套循环的执行过程
**
在编写程序过程中,往往出现相同类型操作需要重复出现,如实现1+2+…+100,则需要做99次加法,这类问题使用循环语句解决,可以使问题变得简单。即循环语句用于实现语句块的重复执行。根据所处理问题的具体情况, Java 中提供了四种不同的循环机制: while 循环、 do … while 循环、 for 循环和 foreach 循环。本章介绍前三种循环机制。
内容:
1.1 while语句及do…while语句
while 循环是一种用于重复执行特定代码块的循环语句,在循环开始前先判断条件是否成立,条件成立才会执行循环体里面的代码,不成立则不会进入循环,执行一轮循环结束后再次返回判断条件,仍然满足条件则会继续执行代码块,直到不满足条件了才会跳出循环,***代码可能一次都不会执行!***使用循环可以减少大量的代码复写!
while (条件表达式) {
循环体代码块(语句)
}
打印1-10之间的整数数字[使用while]
int i = 1;
while (i <= 5){
System.out.println("i="+i);
i++;//累加
}
结果为
i=1
i=2
i=3
i=4
i=5
do…while与while的不同在于do…while先执行一次代码块后才开始判断条件是否满足,如果条件满足的话,就会继续重复执行代码块,直到条件判断不满足才跳出循环。代码一定会执行一次!
do{
循环体代码块(语句)
}while(条件表达式);
打印1-5之间的整数数字[使用do…while]
int i=1;
do{
System.out.println("i="+i);
i++;
}while(i<=5);
执行结果为
i=1
i=2
i=3
i=4
i=5
while语句和do…while语句需要注意一下分号的使用
1.2 for循环语句
for循环使用更广泛,for 循环在代码执行前就要先判断条件表达式是否满足的循环语句。如果条件表达式不满足,那么它的循环语句不会执行。for 语句通常使用在知道循环次数的循环中。
语法
for(初始化表达式1;布尔表达式2;条件表达式3){
语句块;
}
三个条件表达式的含义分别是:
**- 表达式1:赋值语句(循环结构的初始值 int i=1;)
- 表达式2:条件语句(循环结构的循环条件 i<=50;)
- 表达式3:迭代语句(循环结构的迭代语句,用来改变循环变量的初始值 i++/i–)**
for循环三个表达式必须使用分号(;)隔开!
for 循环语句执行顺序是:先执行初始化表达式 1 进行初始化赋值,后判断布尔表达式 2 的值是否为 True,如果为 True,则执行循环体语句块,最后返回条件表达式3完成累加,再判断表达式2,依次这样循环,直到表达式2的值为False,结束循环。
值得说明的是for语句可以三个表达式都省略,但是省略表达式2会陷入死循环,除非在循环中使用break语句跳出,省略表达式1的前提是在for语句之前已经给循环变量赋初值。
打印1-30之间能整除7的数 [使用break语句]
public static void main(String[] args){
for(int i=1;i<=30;i++){
if(i%7==0){
System.out.println(i);
}
}
}
结果为
7
14
21
28
当 for 语句中循环体全为空时,没有循环初值,不判断循环条件,循环变量不改变,此时无条件执行循环体,形成死循环,应尽量避免!在使用循环时:
条件表达式中也通常使用boolean类型的表达式,同时为了避免无限循环情况发生,可以使用break语句来跳出循环,或者使用continue来终止本次循环
1.3 break和continue语句
前面的循环示例中,每一段代码都是必须循环完毕后自动退出,才继续执行其他代码,如果希望在某个循环中间中断,符合某条件再继续循环,用什么办法呢? Java 提供了两个循环中断控制语句, break 语句和 continue 语句。
1. break语句
break语句用于跳出一个循环体或者说是结束该循环,不管是哪种循环,只要碰到了break语句都会直接结束该循环,开始执行循环后面的代码,值得注意的是break只能在循环体内和switch中使用!!
例如 从键盘输入成绩,直到-1为止,求平均成绩
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入成绩:");
int mark = 0;//成绩
int sum = 0;//成绩总和
int num = 0;//存储成绩个数
double avg = 0;//平均成绩
while (true) {
mark = scan.nextInt();
if(mark==-1){
break;//满足条件跳出循环
}
num += 1;
sum += mark;
avg = sum / num;
}
System.out.println("平均成绩为:" + avg);
}
2. continue语句语句
continue语句的作用是不再执行本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为只是跳过本次循环,接着开始下一次循环。
需要注意的是,continue语句并没有终止整个循环!!break是终止整个循环!!!
输出1-10的数中除了5的其他全部整数 [使用continue语句]
public class Test4 {
public static void main(String[] args) {
for(int i=0; i<=10; i++){
if(i==5){
continue;
}
System.out.print(i+" ");
}
}
}
结果为
0 1 2 3 4 6 7 8 9 10
只能在循环体内和switch语句体内使用break
1.4 嵌套循环
嵌套循环即多重循环,在一个循环体内又出现一个或者多个循环体,这就称为循环嵌套或嵌套循环。
外循环执行一次,内循环全部执行完,再进入下一次外循环!
public static void main(String[] args){
for(int i = 1;i <= 7;i++){
for(int j = 1;j <= i;j++){
System.out.print("*");
}
System.out.println();
}
}
输出结果为
(这里,大循环控制行数,小循环控制列数)
九九乘法表也是使用嵌套循环实现
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i * j) + "\t");
}
System.out.println();
}
}
结果为
实际开发中,最多见到的嵌套循环是两层,一般不会出现超过三层的嵌套循环。
到这里就暂时结束了,有不足或者不对的地方欢迎大家补充或指正!