Java流程控制语句2

学习目标:

  • 掌握循环语句
  • 理解死循环的执行流程

学习内容:

第三章、流程控制语句(接上文)

循环本质:就是代替重复工作,使其简化

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点
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值