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

1、 各种运算符
2、 各种运算符的优先级的改变 —— 通过“()”改变哈。
2.2、本次课程预计讲解知识点
本季目标
程序结构
顺序:
A     ==>     B
选择:
二先一或者多先一
循环:
跑圈:循环体
截止条件:限制
程序结构--顺序结构
程序结构--选择结构
程序结构--循环结构
有两种结构:当型和直到型
当型结构
直到型
3、具体内容
程序结构--选择结构
分支语句
if语句---条件判断
If…else之类的一共有三种样式:
第1种样式--if语句

设置一个数字,如果此数字大于10,则打印一个数字大于10,反之就什么都不打印。
设置好一个条件(一般以boolean值表示)
我们看下相反的效果,定义i为10。
10不可以大于10,所以什么也没输出哈。
我们把if条件改成true
true永远为真哈,所以可以输出i>10,这是典型的if语句,这个比较简单一点哈。
第2种样式--if语句
二选一,至少有一个执行。
· 如果朋友过来找我,我就出去玩,否则就在家休息。
我们把上面这句话变成程序语言哈。
我们把f改成false呢?
不管怎么样它都会输出一个语句哈。那么这就是典型的二选一操作哈,非常好理解。
第3种样式--if语句
流程:
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等。") ;
                        }
                    }
                }
            }
        }
    }
};
我们发现需要判断的条件非常多,我们使用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等。");
        }
    }
};

和Demo03输出结果一样,但是修改后Demo04程序更加简洁,没有那么多程序嵌套了。
我们再举一个例子哈:
将学生的成绩(5分制)转换为优秀(5分),及格(3、4分),重修(0、1、2分)三个等级。
分析下哈:
5分            为 优秀
3、4 分      为 及格
0、1、2分  为 重修
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语句语法格式
Switch是多条件判断语句。
注意:使用switch中的表达式里面只能放字符或数字
使用时不要忘了在case语句之后加上一个break,表示退出整个语句,如果不加入此语句,它会从第一个满足条件的地方开始后续的都要被执行。
我们看下如果在case语句后面没有加上break话会出现什么结果
我们发现不应该输出的case 2也输出了。
我们再修改下i值为2,加个case 3看下效果。
我们发现不满足条件的case 1没有被输出,而case 2和case 3输出了,所以我们也验证了如果不在case语句后加入一个break语句,它会从第一个满足条件的地方开始后续的都要被执行。
我们使用正确的写法修改下加上break语句哈:
现在只输出了正确的case 2语句。不满足条件的case 1和3就没有输出了。
我们再来修改下i的值为5,正常情况下应该是什么都不输出。
实际情况也是什么也没有输出哈。但是我们是不是也要提示一下取值超出范围了哈,所以我们需要使用到default语句,当没有条件满足时就输出default语句。
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语句之中的条件变为字符试试哈:
我们验证了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语句有关规则
练习:
我们使用switch语句改写前面两个5分制的实例哈。
将学生的成绩(5分制)转换为ABCDEF六个等级。
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分)三个等级。
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值就可以。
程序结构--循环结构
有两种结构:当型和直到型
1、当型结构
我们己在学校跑1000米为例哈,跑5圈200米长。
分析:
当型:
0 =>跑
1 =>跑
2 =>跑
3 =>跑
4 =>跑
5 =>不跑了
for循环语句
for(设置条件;判断条件是否满足;修改条件)
{
}
现在要求:跑5圈200米
0 1 2 3 4 5(不跑了哈)
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、 方法体肯定要反复执行多次
流程:
我们来做三个练习来练练手哈:
累加 (1+2+3+...+200)
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)
我们发现20!阶乘结果为负数了哈,结果不对哈。
我们看下程序每一步计算的情况哈。
我们以前说过int的数值范围为 ,最大数为2147483647哈,我们把x的变量类型改为长整型看看效果哈。
嗯,现在输出结果正确了哈。
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中为了保证数据的正确,使用了数字的溢出保护。
· 求出整型的最大值:
最大值加1就是最小值,最小值减1就是最大值,怎么理解呢?我们在imax上加1看下效果哈。
我们发现最大值加上1后的值就是int整型的最小值哈。相反的,最小值加1呢?
我们发现最大值加1及最小值减1后两个数反过来了哈。所以说最大值加1就是最小值,最小值减1就是最大值,这句话就好理解了哈。
输出100以内能被3,5,7同时整除的数
我们发现在100以内没有被3,5,7整除的数哈。
我们把数值改大点呢?改个200以内看看哈。
我们发现105满足条件哈。
循环结构也可以双重嵌套哈,我们再来做三个例子练练手哈。
用*打印正方形(5*5)
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("\n");
        }
    }
}
输出9*9乘法表
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)+"\t");
            }
            System.out.print("\n");
        }
    }
}
打印三角形
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循环语句
 
我们使用while修改之前Demo10的跑1000米的程序哈:
使用while语句修改后的效果和for一样哈。
那我们怎么样知道什么时候用for循环,什么时候用while循环呢?
当明确知道要循环的次数的时候,就使用for循环
当不确定循环次数,只知道循环结束条件时,可以使用while循环。
注意事项
比如刚刚的程序,如果我们把i++修改循环条件的语句注释掉,我们看下效果哈。
我们发现程序一直在跑第一圈哈,程序进入死循环了哈。
2.直到型结构
do...while循环语句
While是先判断再执行
Do…while实现,先执行一次之后再判断条件是否满足。
我们比如要张三去帮我买五本书哈,我们先让张三买一本回来看看哈,如果满意,就再让张三去买下一本书,直到买齐五本书哈,如果第一本书买回来偶就不满意,那啥,第二本张三就不要去买了哈,所以张三至少要去买一本书哈。我们用do...while写这个程序看看哈。
Demo19:
public class Demo19
{
    public static void main (String args[]){
        int i=1;
        do
        {
            System.out.println("张三去买书了哈,收到第"+i+"本书哈,满意");
            //修改循环条件
            i++;
        }
        while (i<=5);
    }
}
区别哈:
while语句是先判断后执行,也就是说如果条件不满足,则肯定不会执行。
Do…while语句是先执行一次之后再判断,如果条件不满足则退出循环,此语句循环体至少执行一次。
特殊流程控制语句
break语句
我们举个简单的例子,依次打印由1到10的数字哈
假设如果当值变为7的时候,我们就退出循环。这样我们就用到break特殊语句,必须加上条件哈。
没有输出7了哈。
continue语句
我们用continue语句替换上面的程序哈。
倒~~~我们发现那啥,7也输出了哈。我们分析下这个程序,在什么地方有问题哈,发现当i为7进入continue语句判断退出一次循环时,程序已经在此前打印了7了哈,我们把重新修改一下程序看看效果哈。
OK,满足条件了哈。
注意:
Continue:是退出一次循环
Break:是退出整个循环
4.总结
本季重点
任何语言都包含分支、循环语句

[零基础学JAVA]Java SE基础部分-04. 分支、循环语句的更多相关文章

  1. Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解

    一:java概述: 1982年,SUN公司诞生于美国斯坦福大学校园,并于1986年上市,在NASDAQ(纳斯达克:是全美证券商协会自动报价系统)的标识为SUNW,2007年改为JAVA. 2009年4 ...

  2. 你可能不知道的java、python、JavaScript以及jquary循环语句的区别

    一.概述 java循环语句分为四种形式,分别是 while, do/while, for, foreach: python中循环语句有两种,while,for: JavaScript中循环语句有四种, ...

  3. java:javaScript(定义方式,循环语句,函数与参数,事件机制,控制台记录,event事件获取键盘ascii,confirm和prompt,事件和内置对象,获取input,点击更换背景色)

    1. 定义JS的两种方式: <!DOCTYPE> <html> <head> <meta charset="UTF-8"></ ...

  4. C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率

    循环语句无非几种,常用的就有if()else()结构类型的,while(){}类型的,do(){}while(1);类型,switch()类型,for()类型. 而这章就将前面的所有知识全部汇总下运用 ...

  5. C语言基础三(敲打键盘、寻找资料,循环语句)

    有人在学C语言或者其他语言的时候,大家都会说逻辑思维的硬道理,认为没有逻辑思维的人走不远,那么小编这里借助简单的if...else... 英文解释if(如果),else(否则) ----------- ...

  6. java se系列(三) 顺序语句、if...else、switch、While、do-while、for、break、continue

    1 顺序语句 语句:使用分号分隔的代码称作为一个语句. 注意:没有写任何代码只是一个分号的时候,也是一条语句,称作空语句. 顺序语句就是按照从上往下的顺序执行的语句. 2 判断(if…else) 什么 ...

  7. 《编程导论(Java)&#183;3.2.4 循环语句》

    本文全然复制<编程导论(Java)·3.2.4 循环语句>的内容.除[]中的说明文字.请阅读和比較其它编程教材. 我知道.假设我是一个刚開始学习的人,<编程导论(Java)>非 ...

  8. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

  9. 001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学

    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学 welcome to Java World 欢迎来到Java世界 一起领略Java编程世界的奥秘与奥妙 ...

随机推荐

  1. 【Docker】Dockerfile使用apt-get来安装jdk

    前面谈过使用wget来从oracle下载jdk安装文件是使用了cookie欺骗的方法来越过身份验证来使用Dockerfile在ubuntu内安装oracle版本的jdk的. 然而正道还是用apt-ge ...

  2. oracle系统包——dbms_job用法(oracle定时任务)

    用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务. 一.dbms_job涉及到的知识点1.创建job:variable jobno number;dbms_job.su ...

  3. SEO 小技巧汇总

    一.为了提高搜索点击率,还可以   1.为了增加关键词的密度,将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样). 2.在图象的alt注释语句中加入关键字. 如:<IMG SRC=" ...

  4. PHP之数组和函数的基本教程

    [PHP数组的分类] 按照下标的不同,PHP数组分为关联数组与索引数组 索引数组:下标从0开始,依次增长: 关联数组:下标为字符串格式,每个下标字符串与数字的值一一关联对应(有点像对象的键值对) [关 ...

  5. 不能修改列 "。。",因为它是计算列,或者是 UNION 运算符的结果。

    修改Mapping this.Property(t => t...).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotatio ...

  6. C#基础:传入URL,获得Http Post

    #region 传入url,获得Http Post public string HttpGet(string url) { string result = string.Empty; try { va ...

  7. Java数组逆序存储

    package review01; import java.util.Arrays; public class review01 { public static void main(String[] ...

  8. aspose words做插入压缩后图片到Word文档中

    最近用aspose words做导出Word的功能,发现图片的导出有点难受,一开始是这样写的 Document doc = new Document("D:\\Template.docx&q ...

  9. VS编译优化

    程序的调试是任何一个程序必做的“功课”,当然在调试的过程中肯定会或多或少的遇到一些问题.如果每次关掉,修改,然后在启动,浪费不少时间和经历,尤其是在不确定的情况下尝试修改,启动的次数会更多.如果你要调 ...

  10. Docker简单说明

    前段时间工作需要,简单的研究了下docker.侧重点放在docker的镜像定制方面,后续会研究下k8s的使用. Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的 ...