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. Redis的安装(CentOS 7下)

    redis的官网,www.redis.io 1. 先下载 redis: wget http://download.redis.io/releases/redis-3.0.3.tar.gz 2. 解压: ...

  2. React.js 小书 Lesson25 - 实战分析:评论功能(四)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson25 转载请注明出处,保留原文链接和作者信息. (本文未审核) 目前为止,第二阶段知识已经基本 ...

  3. SVN命令行怎么用?--转百度知道

    http://zhidao.baidu.com/link?url=uPWXURahp5KzdXbgrGTb9-r-abGaNC-J7dkhFkMhf062OJ1jeCM5wpBCgDR7bDg8uFr ...

  4. rem单位怎么使用

    rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...

  5. 使用 Qt 获取 UDP 数据并显示成图片(2)

    本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...

  6. SSIS教程:创建简单的ETL包 -- 2. 添加循环(Adding Looping)

    在第 1 课:创建项目和基本包中,创建了从单个平面文件源中提取数据的包,然后使用查找转换功能对数据进行了转换,最后将数据加载到AdventureWorksDW2012 示例数据库的 FactCurre ...

  7. Spring - 几种RPC模型的使用与比较

    Spring中,用JMS搞RPC时会用到: org.springframework.jms.remoting.JmsInvokerServiceExporter org.springframework ...

  8. 在线课程笔记—.NET基础

    关于学习北京理工大学金旭亮老师在线课程的笔记. 介绍: 在线课程网址:http://mooc.study.163.com/university/BIT#/c 老师个人网站:http://jinxuli ...

  9. nodejs时间工具类

    /** * * @fmt 格式化字符串 * @Date 为需要格式化的日期 * * 示例:format(new Date(),'yyyy-MM-dd hh:mm:ss'); * 返回值为字符串 */ ...

  10. Windows 10 搭建Hadoop平台

    一.环境配置 JDK:1.8. Hadoop下载地址(我选择的是2.7.6版本):https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ ...