java_02-流程控制

java_02-流程控制


结构类型

顺序结构

分支结构

  • if-else结构
  • switch-case结构

循环结构

  • for循环 (遍历数组之类)

    无限循环 for(;😉{}

  • while循环 (条件比较复杂的情况)

    无限循环 while(true){}

  • do-while循环


完整笔记

package main.java.chapter2dir;

import com.sun.xml.internal.xsom.impl.scd.Step;

/**
 * ## 结构类型
 * 顺序结构
 * 分支结构
 * - if-else结构
 * - switch-case结构
 * 循环结构
 * - for循环
 * - while循环
 * - do-while循环
 * <p>
 * <p>
 * 一、分支语句1  if-else结构
 * 第一种:
 * if(条件表达式){
 * 执行表达式
 * }
 * <p>
 * 第二种:
 * if(条件表达式1){
 * 执行表达式1
 * }else if(条件表达式2){
 * 执行表达式2
 * }else if(条件表达式3){
 * 执行表达式3
 * }
 * ...
 * else{
 * 执行表达式n
 * }
 * <p>
 * 二、分支语句2 switch-case结构
 * 1、格式:
 * switch(){
 * case 常量1:
 * 执行语句1;
 * //break
 * case 常量2:
 * 执行语句2;
 * //break
 * ...
 * defaut:
 * 执行语句n;
 * //break
 * }
 * <p>
 * 三、if-else结构和switch-case结构区别联系
 * 1)凡是可以使用switch-case结构的都可以使用if-else代替,反之,不可以。三元用if-else。
 * 2)switch-case效率高于if-else
 * <p>
 * 循环语句新建了一个class
 */

public class q2FlowControlI {
    public static void main(String[] args) {

        /**
         *
         * 一 分支语句1  if-else结构
         * 第一种:
         * if(条件表达式){
         * 执行表达式
         * }
         * <p>
         * 第二种:
         * if(条件表达式1){
         * 执行表达式1
         * }else if(条件表达式2){
         * 执行表达式2
         * }else if(条件表达式3){
         * 执行表达式3
         * }
         * ...
         * else{
         * 执行表达式n
         * }
         */
        //举例1
        int hearBeats = 179;
        if (hearBeats < 60 || hearBeats > 100) {
            System.out.println("进一步检查");
        }
        System.out.println("检查结束");

        //举例2
        int age = 23;
        if (age < 18) {
            System.out.println("你数学几分");
        } else if (age < 25) {
            System.out.println("你的存款几位数");
        } else {
            System.out.println("离谱");
        }


        /**
         * 二、分支语句2 switch-case结构
         * 1.格式:
         * switch(){
         * case 常量1:
         * 执行语句1;
         * //break
         * case 常量2:
         * 执行语句2;
         * //break
         * ...
         * defaut:
         * 执行语句n;
         * //break
         *  * }
         * 2.说明:
         * ①根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。
         *   当调用完执行语句后,任然继续向下执行其他case结构中的执行语句,直达遇到break关键字或次switch-case结构结束。
         * ②使用在switch-case结构中,遇到则跳出该结构。
         * ③switch结构中的表达式,只支持六种类型:byte、short、char、int、枚举类型(jdk5.0新增)、String类型(jdk7.0新增)。
         *   报错:如果用了以上类型之外的,会报错不兼容类型
         * ④case之后只能声明常量。不能声明范围。
         * ⑤default 相当于if-else中的else,可选,位置灵活。
         */
        //常规举例1
        int number = 1;

        switch (number) { //表达式非条件表达式
            case 0:
                System.out.println("zero");
                break;
            case 1:
                System.out.println("one");
                break;    // 如果这里没有break,满足1后面的都会打印出来 one two three other
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
            default:
                System.out.println("other");
        }

        //举例2 目的:说明多个 相同输出的case可以放一起
        //例题:对学生成绩大于60分的,输出合格,低于60分的输出不合格
        // 更优解 switch(score/60)
        int score = 75;
        switch (score / 10) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            case 6:
                System.out.println("不及格");
                break;
            case 7:
            case 8:
            case 9:
            case 10:
                System.out.println("及格");
                break;
            default:
                break;
        }


        // 举例3 需求:输入年,月份,日期,求是年的第几天 (利用了无break,会一直往下执行的特性)
        /*
            注:判断是否是闰年的标准:
            1)能被4整除,但不能被100整除;
            2)或能被400整除。
         */
        int year = 2018;
        int mon = 3;
        int day = 5;
        Integer num = 0;
        switch (mon) {
            case 12:
                num += 31;
            case 11:
                num += 30;
            case 10:
                num += 31;
            case 9:
                num += 30;
            case 8:
                num += 31;
            case 7:
                num += 31;
            case 6:
                num += 30;
            case 5:
                num += 31;
            case 4:
                num += 30;
            case 3:
                num += 31;
            case 2:
                if (year % 4 == 0 & year % 100 != 0 || year % 400 == 0) {
                    num += 29;
                } else {
                    num += 28;
                }
            case 1:
                num += day;
            default:
                System.out.println(year + "年" + mon + "月" + day + "日是" + year + "年的第" + num + "天");
        }

        /**
         * 循环结构:
         * ① 初始化条件
         * ② 循环条件 ---> 布尔类型
         * ③ 循环体
         * ④ 迭代条件
         *
         * 循环结构1:for循环  支持为空,break退出循环for(;;){}
         * for(①;②;④){
         *     ③;
         * }
         * break关键字的使用
         *
         * 循环结构2:while循环
         * ①
         * while(②){
         *      ③;
         *      ④;
         * }
         *
         * for和while的区别和联系
         * 1)两者可以互相转换
         * 2)for的变量时循环体内私有的
         *
         * 循环结构3:do-while结构
         * ①
         * do{
         *     ③;
         *     ④;
         * }while(②)
         *
         * do-while结构和while结构的区别和联系
         * 1)do-while结构先执行一次循环体,再判断
         *
         */

        /*
        例1:for循环结构
         i仅在循环结构内存在
         */
        for (int i = 0; i < 5; i++) {
            System.out.println("hello " + i);
        }

        /*
         例2:break的使用
         需求:求两个数的最大公约数和最小公倍数(比如12和20的最大公约数是4,最小公倍数是60)。
         */
        System.out.println("-----break应用-----\n-----需求:求两个数的最大公约数和最小公倍数(比如12和20的最大公约数是4,最小公倍数是60)-----");

        Integer num1 = 12;
        Integer num2 = 20;
        // 最大公约数
        // step1 取num1 num2最小值
        Integer max_num = (num1 >= num2) ? num1 : num2;
        // step2 遍历
        for (int i = max_num; i < num1 * num2; i++) {
            if (i % num1 == 0 && i % num2 == 0) {
                System.out.println("最大公约数是" + i);
                break;
            }
        }
        // 最小公倍数
        Integer min_num = (num1 <= num2) ? num1 : num2;
        for (int i = min_num; i <= max_num; i--) {
            if (num1 % i == 0 && num2 % i == 0) {
                System.out.println("最小公倍数是" + i);
                break;
            }
        }

        System.out.println("-----while demo 遍历100以内的所有偶数-----");
        /*
        例2:while循环,遍历100以内的所有偶数
         */
        int i = 1;
        while (i <= 100) {
            if (i % 2 == 0) {
                System.out.println(i);
            }
            i++;
        }

        System.out.println("-----do-while demo 遍历100以内的所有偶数-----");

        /*
        例3:do-while循环,遍历100以内所有偶数
         */

        int ii = 1;
        do{
            if(ii % 2 == 0){
                System.out.println(ii);
            }
            ii++;
        }while(ii <= 100);


    }
}

/*
进一步检查
检查结束
你的存款几位数
one
及格
2018年3月5日是2018年的第64天
hello 0
hello 1
hello 2
hello 3
hello 4
-----break应用-----
-----需求:求两个数的最大公约数和最小公倍数(比如12和20的最大公约数是4,最小公倍数是60)-----
最大公约数是60
最小公倍数是4
-----while demo 遍历100以内的所有偶数-----
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100
-----do-while demo 遍历100以内的所有偶数-----
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
64
66
68
70
72
74
76
78
80
82
84
86
88
90
92
94
96
98
100

Process finished with exit code 0

 */

Done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值