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. mysql 5.6 windows7 解压缩版安装的坑

    从官网下载了解压缩版的mysql ,解压缩后,配置好环境变量,运行安装命令,提示我 缺失ddl文件,然后百度,找到了一个windows 系统组件扫描安装缺失组件的程序,然后继续安装,遇到了 初始化密码 ...

  2. <数据挖掘导论>读书笔记2

    1.频率和众数 frequency(vi)=具有属性值vi的对象数/m 分类属性的众数mode是具有最高频率的值. 2.百分位数 3.位置度量:均值和中位数 4.散布度量:极差和方差 绝对平均偏差 A ...

  3. PHP代码语法验证插件:SublimeLinter

    1.调出控制台 Ctrl+Shift+P,输入 install package,Enter

  4. CentOS下输入输出重定向

    nux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linux默认输入 ...

  5. Linux文件上传下载sz 和 rz 命令

    windows系统和linux系统之间文件上传和下载用到 rz 和 sz 命令.rz: 上传文件sz:下载文件 先检查是否安装rz,sz模块 安装rz,sz 模块yum search sz安装yum ...

  6. C#语言-08.序列化与反序列化

    a. 序列化:是将对象的状态存储到特定存储介质中的过程 i. 语法:public void Serialize(序列化过程的文件流,保存的对象) b. 返序列化:是从特定存储介质中将数据重新构建对象的 ...

  7. java类与对象基础--抽象类和接口

    在java的类体系中,有两个比较特殊的抽象体--抽象类和接口.抽象体并不可以拥有具体的对象(而且接口甚至不是类),但是它们却是在java设计领域非常重要的两个概念,很多优秀的设计模式都是基于这两个概念 ...

  8. Emmet使用方法

    本文摘自:http://www.iteye.com/news/27580 Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语 ...

  9. 运行tomcat7w.exe,提示:指定的服务未安装unable to open the service tomcat7

    这是服务没安装,到tomcat的bin目录下运行 service.bat install 即可

  10. ImportError: No module named bs4错误解决方法

    前言:毕业论文打算用Python做爬虫爬一些数据,最近开始入门Python: 在学习的时候遇到一个问题,按照看的文章安装了Python,也配置了相应的环境(使用window系统),使用pycharm编 ...