循环
学习目标:
- 掌握循环语句
- 理解死循环的执行流程
学习内容:
第三章、流程控制语句(接上文)
循环本质:就是代替重复工作,使其简化
3-8、循环语句:for循环
1.for循环语法格式
for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}
for(;;){
循环体语句块;//如果循环体中没有跳出循环体的语句,那么就是死循环
}
注意:
①循环条件必须是boolean类型
②如果循环条件二省略,就默认循环条件成立
执行流程:
- 执行初始化语句①,完成循环变量的初始化
- 执行循环条件语句②,看条件语句的值是true还是false
如果是true,执行第三
false,循环终止
- 执行循环体语句③
- 执行迭代语句④,对循环变量重新赋值
- 根据循环变量的新值,重新从第二步开始执行
练习1:打印10遍Hello World !
public class ForDemo1 {
public static void main(String[] args){
for (int i =1;i<=10;i++){
System.out.println("Hello world!");
}
}
}
练习2:打印1~4, 4~1
public class ForDemo2 {
public static void main(String[] args){
for (int i = 1; i < 5; i++) {
System.out.println(i);
}
for (int j = 4; j >= 1; j--) {
System.out.println(j);
}
}
}
练习3:求出1~100的数据和
public class ForDemo3 {
public static void main(String[] args){
int sum = 0;
for (int i = 0; i < 101; i++) {
sum = sum + i;
}
System.out.println(sum);
}
}
练习4:求出100之间的偶数和、奇数和
public class ForDemo4 {
public static void main(String[] args){
int sum = 0, sum1 = 0;
for (int i = 0; i < 101; i++) {
if (i % 2 == 0) {
sum = sum + i;
}else{
sum1 = sum1 + i;
}
}
System.out.println("偶数和:"+sum);
System.out.println("奇数和:"+sum1);
}
}
3-9、while循环
1、while循环语法结构
while(循环条件①){
循环体语句②;
}
while(true){
循环体语句;//没有跳出语句就是死循环
}
注意:
while循环中的条件必须是布尔型
2、执行流程
-
执行循环条件语句①,判断条件是true还是false
- 如果是true,执行第二步
- 如果是false,循环终止
-
执行循环体语句②
-
循环体语句执行完,从第一步开始再执行
3、while循环语句的拓展
初始化语句①
while(循环条件②){
循环体语句③;
迭代语句④
}
-
执行初始化语句①,循环变量初始化
-
执行条件②
- 如果true,执行第三部
- false,循环结束
-
执行循环体语句③
-
执行迭代语句④,针对循环变量重新赋值
-
根据变量的新值,重新第二步开始在执行一遍
练习1:遍历1~100之间的偶数
public class whileDemo1 {
public static void main(String[] args){
int num = 2;
while (num < 101) {
System.out.println(num);
num += 2;
}
}
}
练习2:折纸,给定一个高度888888888米,如果有一张足够大的纸张,纸张厚度0.1毫米,问折叠多少次可以达到888888888米的高度
public class WhileDemo {
public static void main(String[] args){
int count = 0;
//纸张厚度毫米换算米
double paper = 0.0001;
int h = 888888888;
while (paper <= h) {
paper *= 2;
count++;
}
System.out.println("折叠"+count+"次");
}
}
3-10、do…while循环
1、do…while循环语法结构
do{
循环体语句①
}while(循环条件语句②);
-
执行循环体语句①
-
执行循环条件语句②,
- true,继续执行循环
- false,循环结束
-
循环体语句执行完,重新开始
2、拓展语法结构
初始化语句①
do{
循环体语句②;
迭代语句③;
}while(循环条件④);
- 执行初始化语句①,完成循环变量的初始化;
- 执行循环体语句②;
- 执行迭代语句③,针对循环变量重新赋值;
- 执行循环条件语句④,看循环条件语句的值是true,还是false;
- 如果是true,根据循环变量的新值,重新从第二步开始再执行一遍;
- 如果是false,循环语句中止
练习1:统计正数、负数个数
public class Do_WhileDemo1 {
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
int positive = 0;
int negative = 0;
int num;
do {
System.out.println("请输入整数(0)结束:");
num = input.nextInt();
if (num > 0) {
positive++;
} else if (num<0){
negative++;
}
}while (num!=0);
System.out.println("正数"+positive+"个,负数:"+negative+"个");
}
}
练习2:猜数字游戏
public class Do_WhileDemo {
public static void main(String[] args){
int num = (int)(Math.random()* 100);
//System.out.println(num);
//声明一个变量,用来存储猜的次数
int count = 0;
java.util.Scanner input = new java.util.Scanner(System.in);
int guess;//提升作用域
do{
System.out.print("请输入100以内的整数:");
guess = input.nextInt();
//输入一次,就表示猜了一次
count++;
if(guess > num){
System.out.println("大了");
}else if(guess < num){
System.out.println("小了");
}
}while(num != guess);
System.out.println("一共猜了:" + count+"次");
}
}
3-11、控制语句
1、break(终止switch或者当前循环)
练习1:判断某个数是不是素数
public class BreakDemo1 {
public static void main(String[] args){
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("请输入一个正整数:");
int num = input.nextInt();
boolean flag = true;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
flag = false;
break;
}
}
System.out.println(num+(flag?"是":"不是")+"素数");
}
}
2、continue
练习1:打印1-100之间的整数,跳过7的倍数和7结尾的数
public class ContinueDemo {
public static void main(String[] args){
//打印1-100之间的整数,跳过7的倍数和7结尾的数
for(int i=1; i<=100; i++){
if(i%7==0 || i%10==7){
continue;
//break;
}
System.out.println(i);
}
}
}
3-12、循环语句的区别
-
从循环次数角度分析
- do…while循环至少执行一次循环体语句
- for和while循环先循环条件语句是否成立,然后决定是否执行循环体,至少执行零次循环体语句
-
从循环变量的生命周期角度分析
- for循环的循环变量在for()中声明的,在循环语句结束后,不可以被访问;
- while和do…while循环的循环变量因为在外面声明的,所以while和do…while结束后可以被继续使用的;
-
如何选择
- 遍历有明显的循环次数(范围)的需求,选择for循环
- 遍历没有明显的循环次数(范围)的需求,循环while循环
- 如果循环体语句块至少执行一次,可以考虑使用do…while循环
- 本质上:三种循环之间是可以互相转换的,都能实现循环的功能
-
三种循环结构都具有四要素:
- (1)循环变量的初始化表达式
- (2)循环条件
- (3)循环变量的修改的迭代表达式
- (4)循环体语句块
学习时间:
- 周一至周天晚上 7 点—晚上9点