什么是循环结构:
循环是程序设计语言中反复执行某写代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复执行。说白了就是反复执行一段相同或相似的代码
-
循环三要素:
循环变量的初始化
循环的条件(以循环变量为基础)
循环变量的改变(向着循环的结束变)
while语句的执行逻辑:
计算boolean表达式的值
当值为true则执行语句块,语句执行完以后再次判断boolean值,如果值还是为true则继续执行,如此循环,直到boolean的值为false时退出while循环。
while语句案例演示:
public static void main(String[] args) {
int num = 1;
while (num <= 9) {
System.out.println(num + "*9=" + num * 9);
num++;
}
System.out.println("over");
}
说明:先判断条件,在执行,条件不满足的时候,跳出循环。
- 注:一般情况下,循环操作中会存在循环的条件不满足的可能性,否则将成为死循环
while语句使用break案例演示:
public static void main(String[] args) {
int i = 0;
while (i < 10) {
if (i == 5) {
break;
}
System.err.println("i的值为:" + i);
i++;
}
}
说明:
i的初始值为0,代码进入while块中判断,满足条件,进入if判断,条件不满足 i++,
当i通过自加到5的时候,满足if块的条件,用break跳出循环。
do-while语句:
- 先计算boolean表达式,如果为true,再次执行语句块,如此循环,直到为false为止。
do-while语句案例演示:
public static void main(String[] args) {
// 模拟用户登录
Scanner scan = new Scanner(System.in);
int pwd = 123; // 初始密码
int i = 0;
System.err.println("初始密码:" + pwd);
int guess; // 用户输入的密码
do {
System.out.println("请输入密码!");
System.out.println("输入密码共有3次机会!"); // 告诉用户,输出错误密码的次数
guess = scan.nextInt();
if (i == 2) { // 计算错误密码次数
break; // 跳出循环
}
i++;
System.err.println("密码输入错误次数为:" + i);
} while (guess != pwd);
if (guess == pwd) {
System.out.println("密码正确");
} else {
System.out.println("密码错误");
}
}
说明:
先执行do语句块里的代码,在判断条件,条件为true时,再次执行语句块,等条件为false时,跳出循环。
-
while和do-while的区别
while:先判断后执行,有可能一次都不执行
do-while:先执行后判断,至少会执行一次
for语句的执行逻辑:
for (int j = 0; j < args.length; j++) {
String string = args[j];
}
说明:
for (表达式1;表达式2;表达式3) {
语句块(循环体)
}
for 语句案例演示:
for (int i = 0; i < 3; i++) {
System.err.println("学习Java");
}
System.err.println("条件不满足,程序结束");
说明:
程序第一轮执行顺序:i=0,0<3(条件满足),i++ 输出循环体语句
程序第二轮执行顺序:i=1,1<3(条件满足),i++ 输出循环体语句
程序第三轮执行顺序:i=2,2<3(条件满足),i++ 输出循环体语句
程序第四轮执行顺序:i=3,3<3(条件不满足)程序结束
死循环案例演示:
for (;;) {
System.err.println("学习Java");
}
说明:
当所有表达式为空时,进入死循环状态
break可用于循环语句或者switch语句中,可以使程序终止循环而执行循环后面的语句,常常与条件语句一起使用。
continue 只能用于循环中,作用为跳过循环体中剩余语句,而执行下一次循环
for循环中使用continue案例演示:
public static void main(String[] args) {
int num = 0;
for (int i = 1; i <= 100; i++) {
if (i % 10 == 3) {
continue;
}
num += i;
}
}
说明:
当if条件满足时continue跳过循环体中剩余的语句
程序执行:
num = 0
i = 1 num = 0 + i(1)
i = 2 num = 1 + i(2)
i = 3 满足条件,所以跳出剩余循环体中的语句。
以此类推,当i 的值为101的时循环结束。
循环问题:
需要多次重复执行一个或多个任务的问题考虑使用循环来解决,一般情况for循环使用最多。
-
循环问题定义——当循环:
- 如果业务转换为当这样时,优先选择while语句来实现。
-
循环问题定义——直到循环:
- 如果业务转换为直到这样时,优先选择do-while语句来实现。
-
循环问题定义——固定次数循环:
- 如果业务中获取一个确切的循环次数,考虑for循环。