• [零基础学JAVA]Java SE基础部分-04. 分支、循环语句


    1、课程名称:分支、循环
    本季为JAVA程序中最重要的部分,在讲解的时候除了讲解各种主要的控制语句(分支语句和循环语句),也讲解了大量的实例。
    2、知识点
    2.1、上次课程主要知识点回顾

    1、 各种运算符
    2、 各种运算符的优先级的改变 —— 通过“()”改变哈。
    2.2、本次课程预计讲解知识点
    本季目标
    image
    程序结构
    image
    顺序:
    A     ==>     B
    选择:
    二先一或者多先一
    循环:
    跑圈:循环体
    截止条件:限制
    程序结构--顺序结构
    image
    程序结构--选择结构
    image
    程序结构--循环结构
    有两种结构:当型和直到型
    当型结构
    image
    直到型
    image
    3、具体内容
    程序结构--选择结构
    分支语句
    image
    if语句---条件判断
    If…else之类的一共有三种样式:
    第1种样式--if语句
    image
    设置一个数字,如果此数字大于10,则打印一个数字大于10,反之就什么都不打印。
    设置好一个条件(一般以boolean值表示)
    image
    image
    我们看下相反的效果,定义i为10。
    image
    10不可以大于10,所以什么也没输出哈。
    image
    我们把if条件改成true
    image
    image
    true永远为真哈,所以可以输出i>10,这是典型的if语句,这个比较简单一点哈。
    第2种样式--if语句
    image
    二选一,至少有一个执行。
    · 如果朋友过来找我,我就出去玩,否则就在家休息。
    我们把上面这句话变成程序语言哈。
    image
    image
    我们把f改成false呢?
    image
    image
    不管怎么样它都会输出一个语句哈。那么这就是典型的二选一操作哈,非常好理解。
    第3种样式--if语句
    image
    流程:
    image
    if...else语句应用举例
    将学生的成绩(5分制)转换为ABCDEF六个等级
    如果是5分的话学生成绩应该是A等
    如果是4分的话学生成绩应该是B等
    如果是3分的话学生成绩应该是C等
    如果是2分的话学生成绩应该是D等
    如果是1分的话学生成绩应该是E等
    如果是0分的话学生成绩应该是F等
    假设说,以上的内容使用之前的if…else完成,如以下代码形式:
    public class Demo03
    {
        public static void main(String args[]){
            int i = 2 ;
            if(i==5)
            {
                System.out.println("成绩是A等。") ;
            }
            else
            {
                if(i==4)
                {
                    System.out.println("成绩是B等。") ;
                }
                else
                {
                    if(i==3)
                    {
                        System.out.println("成绩是C等。") ;
                    }
                    else
                    {
                        if(i==2)
                        {
                            System.out.println("成绩是D等。") ;
                        }
                        else
                        {
                            if(i==1)
                            {
                                System.out.println("成绩是E等。") ;
                            }
                            else
                            {
                                System.out.println("成绩是F等。") ;
                            }
                        }
                    }
                }
            }
        }
    };
    image
    image
    我们发现需要判断的条件非常多,我们使用if...else if...else语句进行修改哈:
    public class Demo04
    {
        public static void main(String args[]){
            int i = 2 ;
            if (i==5)
            {
                System.out.println("成绩是A等。");
            }
            else if (i==4)
            {
                System.out.println("成绩是B等。");
            }
            else if (i==3)
            {
                System.out.println("成绩是C等。");
            }
            else if (i==2)
            {
                System.out.println("成绩是D等。");
            }
            else if (i==1)
            {
                System.out.println("成绩是E等。");
            }
            else
            {
                System.out.println("成绩是F等。");
            }
        }
    };
    image
    image
    和Demo03输出结果一样,但是修改后Demo04程序更加简洁,没有那么多程序嵌套了。
    我们再举一个例子哈:
    将学生的成绩(5分制)转换为优秀(5分),及格(3、4分),重修(0、1、2分)三个等级。
    分析下哈:
    5分            为 优秀
    3、4 分      为 及格
    0、1、2分  为 重修
    image
    image
    Demo05:
    public class Demo05
    {
        public static void main(String args[]){
            int i = 2 ;
            if (i==5)
            {
                System.out.println("优秀");
            }
            else if (i==4||i==3)
            {
                System.out.println("及格");
            }
            else
            {
                System.out.println("重修");
            }
        }
    };
    switch语句语法格式
    image
    Switch是多条件判断语句。
    注意:使用switch中的表达式里面只能放字符或数字
    使用时不要忘了在case语句之后加上一个break,表示退出整个语句,如果不加入此语句,它会从第一个满足条件的地方开始后续的都要被执行。
    我们看下如果在case语句后面没有加上break话会出现什么结果
    image
    image
    我们发现不应该输出的case 2也输出了。
    我们再修改下i值为2,加个case 3看下效果。
    image
    image
    我们发现不满足条件的case 1没有被输出,而case 2和case 3输出了,所以我们也验证了如果不在case语句后加入一个break语句,它会从第一个满足条件的地方开始后续的都要被执行。
    我们使用正确的写法修改下加上break语句哈:
    image
    image
    现在只输出了正确的case 2语句。不满足条件的case 1和3就没有输出了。
    我们再来修改下i的值为5,正常情况下应该是什么都不输出。
    image
    image
    实际情况也是什么也没有输出哈。但是我们是不是也要提示一下取值超出范围了哈,所以我们需要使用到default语句,当没有条件满足时就输出default语句。
    image
    image
    Demo06:
    public class Demo06
    {
        public static void main(String args[]){
            int i = 5 ;
            switch (i)
            {
            case 1:
                {
                //条件1
                System.out.println("case 1 -->"+i);
                break;
                }
            case 2:
                {
                //条件2
                System.out.println("case 2 -->"+i);
                break;
                }
            case 3:
                {
                //条件3
                System.out.println("case 3 -->"+i);
                break;
                }
            default :
                {
                //当所有条件都不满足的时候,就使用default语句
                System.out.println("没有任何条件满足。");
                break;
                }
            }   
        }
    };
    这就是一个完整的switch语句,非常简单。
    现在将switch语句之中的条件变为字符试试哈:
    image
    image
    我们验证了switch中的表达式里面也能放字符哈。
    Demo07:
    public class Demo07
    {
        public static void main(String args[]){
            char i = 'A' ;
            switch (i)
            {
            case 'A':
                {
                //条件1
                System.out.println("case 1 -->"+i);
                break;
                }
            case 'B':
                {
                //条件2
                System.out.println("case 2 -->"+i);
                break;
                }
            case 'C':
                {
                //条件3
                System.out.println("case 3 -->"+i);
                break;
                }
            default :
                {
                //当所有条件都不满足的时候,就使用default语句
                System.out.println("没有任何条件满足。");
                break;
                }
            }   
        }
    };
    switch语句有关规则
    image
    练习:
    我们使用switch语句改写前面两个5分制的实例哈。
    将学生的成绩(5分制)转换为ABCDEF六个等级。
    image
    image
    Demo08:
    public class Demo08
    {
        public static void main(String args[]){
            int i = 5 ;
            //使用switch进行判断
            switch (i)
            {
            case 5:
                {
                System.out.println("成绩是A等。");
                break;
                }
            case 4:
                {
                System.out.println("成绩是B等。");
                break;
                }
            case 3:
                {
                System.out.println("成绩是C等。");
                break;
                }
            case 2:
                {
                System.out.println("成绩是D等。");
                break;
                }
            case 1:
                {
                System.out.println("成绩是E等。");
                break;
                }
            case 0:
                {
                System.out.println("成绩是F等。");
                break;
                }
            default :
                {
                //当所有条件都不满足的时候,就使用default语句
                System.out.println("成绩不正确。");
                break;
                }
            }   
        }
    };
    将学生的成绩(5分制)转换为优秀(5分),及格(3、4分),重修(0、1、2分)三个等级。
    image
    image
    Demo09:
    public class Demo09
    {
        public static void main(String args[]){
            int i = 3 ;
            //使用switch进行判断
            switch (i)
            {
            case 5:
                {
                System.out.println("优秀");
                break;
                }
            case 4:
                {
                System.out.println("合格");
                break;
                }
            case 3:
                {
                System.out.println("合格");
                break;
                }
            case 2:
                {
                System.out.println("重修");
                break;
                }
            case 1:
                {
                System.out.println("重修");
                break;
                }
            case 0:
                {
                System.out.println("重修");
                break;
                }
            default :
                {
                //当所有条件都不满足的时候,就使用default语句
                System.out.println("成绩不正确。");
                break;
                }
            }   
        }
    };
    注意:
    Switch语句只能判断数字或字符,而if…else if语句可以判断各种条件,只要条件中加入的是boolean值就可以。
    程序结构--循环结构
    image
    有两种结构:当型和直到型
    1、当型结构
    image
    我们己在学校跑1000米为例哈,跑5圈200米长。
    分析:
    当型:
    0 =>跑
    1 =>跑
    2 =>跑
    3 =>跑
    4 =>跑
    5 =>不跑了
    for循环语句
    image
    for(设置条件;判断条件是否满足;修改条件)
    {
    }
    现在要求:跑5圈200米
    0 1 2 3 4 5(不跑了哈)
    image
    image
    Demo10:
    public class Demo10
    {
        public static void main (String args[]){
            // 一开始跑圈的记录从0开始记录
            // i<5:表示判断跑的圈数是否是5圈,如果不够则继续跑
            // 每跑完一圈,就去修改圈数
            for (int i=0;i<5;i++)
            {
                System.out.println("已经跑了"+(i+1)+"圈,共"+"跑了"+((i+1)*200)+"米了~~");
            }
                System.out.println("偶已经跑完1000米了哈");
        }
    }
    循环必备的几个条件:
    1、 必须有循环初始:int i=0;
    2、 必须有判断条件(结束条件):i<5
    3、 要有条件的修改
    4、 方法体肯定要反复执行多次
    流程:
    image
    我们来做三个练习来练练手哈:
    累加 (1+2+3+...+200)
    image
    image
    Demo11:
    public class Demo11
    {
        public static void main (String args[]){
            int sum = 0 ;
            for (int i=1;i<=200;i++)
            {
                sum += i ;
            }
                System.out.println("累加结果为"+sum);
        }
    }
    阶乘 20! (1*2*3*...*20)
    image
    image
    我们发现20!阶乘结果为负数了哈,结果不对哈。
    我们看下程序每一步计算的情况哈。
    image
    image
    我们以前说过int的数值范围为image ,最大数为2147483647哈,我们把x的变量类型改为长整型看看效果哈。
    image
    image
    嗯,现在输出结果正确了哈。
    Demo12:
    public class Demo12
    {
        public static void main (String args[]){
            long x = 1 ;
            for (int i=1;i<=20;i++)
            {
                x *= i ;
                System.out.println(x);
            }
                System.out.println("阶乘的结果为"+x);
        }
    }
    注意:在java中为了保证数据的正确,使用了数字的溢出保护。
    · 求出整型的最大值:
    image
    image
    最大值加1就是最小值,最小值减1就是最大值,怎么理解呢?我们在imax上加1看下效果哈。
    image
    image
    我们发现最大值加上1后的值就是int整型的最小值哈。相反的,最小值加1呢?
    image
    image
    我们发现最大值加1及最小值减1后两个数反过来了哈。所以说最大值加1就是最小值,最小值减1就是最大值,这句话就好理解了哈。
    输出100以内能被3,5,7同时整除的数
    image
    image
    我们发现在100以内没有被3,5,7整除的数哈。
    我们把数值改大点呢?改个200以内看看哈。
    image
    image
    我们发现105满足条件哈。
    循环结构也可以双重嵌套哈,我们再来做三个例子练练手哈。
    用*打印正方形(5*5)
    image
    image
    Demo15:
    public class Demo15
    {
        public static void main (String args[]){
            for (int i=0;i<5 ;i++ )
            {
                for (int j=0;j<5 ;j++ )
                {
                    System.out.print("*");
                }
                System.out.print(" ");
            }
        }
    }
    输出9*9乘法表
    image
    image
    Demo16:
    public class Demo16
    {
        public static void main (String args[]){
            for (int i=1;i<=9 ;i++ )
            {
                for (int j=1;<=i ;j++ )
                {
                    System.out.print(i+"*"+j+"="+(i*j)+" ");
                }
                System.out.print(" ");
            }
        }
    }
    打印三角形
    image
    image
    Demo17:
    public class Demo17
    {
        public static void main (String args[]){
            for (int i=0;i<5 ;i++ )
            {
                for (int k=0;k<5-i ;k++ )
                {
                    //打印空格哈
                    System.out.print(" ");
                }
                for (int j=0;j<=i ;j++ )
                {
                    System.out.print("* ");
                }
                System.out.println(" ");
            }
        }
    }
    while循环语句
    image 
    我们使用while修改之前Demo10的跑1000米的程序哈:
    image
    image
    使用while语句修改后的效果和for一样哈。
    那我们怎么样知道什么时候用for循环,什么时候用while循环呢?
    当明确知道要循环的次数的时候,就使用for循环
    当不确定循环次数,只知道循环结束条件时,可以使用while循环。
    注意事项
    image
    比如刚刚的程序,如果我们把i++修改循环条件的语句注释掉,我们看下效果哈。
    image
    我们发现程序一直在跑第一圈哈,程序进入死循环了哈。
    image
    2.直到型结构
    image
    do...while循环语句
    image
    While是先判断再执行
    Do…while实现,先执行一次之后再判断条件是否满足。
    我们比如要张三去帮我买五本书哈,我们先让张三买一本回来看看哈,如果满意,就再让张三去买下一本书,直到买齐五本书哈,如果第一本书买回来偶就不满意,那啥,第二本张三就不要去买了哈,所以张三至少要去买一本书哈。我们用do...while写这个程序看看哈。
    image
    image
    Demo19:
    public class Demo19
    {
        public static void main (String args[]){
            int i=1;
            do
            {
                System.out.println("张三去买书了哈,收到第"+i+"本书哈,满意");
                //修改循环条件
                i++;
            }
            while (i<=5);
        }
    }
    区别哈:
    image
    while语句是先判断后执行,也就是说如果条件不满足,则肯定不会执行。
    Do…while语句是先执行一次之后再判断,如果条件不满足则退出循环,此语句循环体至少执行一次。
    特殊流程控制语句
    break语句
    image
    我们举个简单的例子,依次打印由1到10的数字哈
    image
    image
    假设如果当值变为7的时候,我们就退出循环。这样我们就用到break特殊语句,必须加上条件哈。
    image
    没有输出7了哈。
    image
    continue语句
    image
    我们用continue语句替换上面的程序哈。
    image
    image
    倒~~~我们发现那啥,7也输出了哈。我们分析下这个程序,在什么地方有问题哈,发现当i为7进入continue语句判断退出一次循环时,程序已经在此前打印了7了哈,我们把重新修改一下程序看看效果哈。
    image
    OK,满足条件了哈。
    image
    注意:
    Continue:是退出一次循环
    Break:是退出整个循环
    4.总结
    本季重点
    image
    任何语言都包含分支、循环语句

  • 相关阅读:
    知识点
    Python基础 (下)
    Python基础 (上)
    RESTful和SOAP的区别
    Maven
    centos7下配置的php命令
    centos7下的nginx命令配置
    CentOS 7.4下使用yum安装MySQL5.7.20 最简单的
    word下载
    phpExcel导出表格
  • 原文地址:https://www.cnblogs.com/zhangsf/p/3326526.html
Copyright © 2020-2023  润新知