美文网首页
Java流程控制 (分支与循环)

Java流程控制 (分支与循环)

作者: Ansaxnsy | 来源:发表于2017-08-02 20:04 被阅读0次

流程控制

目录:

顺序结构

分支

循环

循环嵌套

控制循环的关键词

总会出现一种场景:要满足某个条件时,才去做一件事情。                         —分支

也有另外一种场景:重复做一个事情,直到满足某个条件才会停下来。       —循环

编程就是把一些人类不愿意干、干起来很乏味的事情,告诉计算机去做

流程控制一共有 3 种结构:

    A.  顺序结构。如果没有流程控制,计算机总是从上到下,依次执行每一行。

    B.  分支。满足某个条件时,才去执行代码。

    C.  循环。重复一段代码。

分支:if  、 switch

        if 语句

3 种语法:

        第一种语法格式:

        if(  返回 boolean 的表达式)

        {

               // 要做的事情

        }

        第二种语法格式:

        if(  返回 boolean 的表达式)

        {

        // 要做的事情

        }

        else

        {

        // 要做的事情

        }
        第三种语法格式:

        if (  返回 boolean 的表达式)

        {

        // 要做的事情

        }

        else if (  返回 boolean 的表达式)      // else if 可出现 0~N 次

        {

        }

        else                                                 // else  可出现 0~1 次

        {

        // 要做的事情

        }

2 个注意点:

        A.    如果条件执行体只有一行代码,Java 允许省略条件执行体的花括号。

               规则:如果省略了花括号,if 条件只控制到第一个分号(;)前面

               建议:即使条件执行体只有一行代码,也包括花括号。

        B.    else 本身就是条件

               当我们有多个 else if 块时,

               建议:先处理范围小的条件。

         switch语句

当等于某个值时,才执行一段代码

        只有在 JDK 7 里,表达式的值才能 String

        switch( 返回值是 byte 、short、char、int 或 String 或 枚举的表达式)

        {

              case 值 1:                         // case 块可以出现 1~N 次

                       // 要做的事情

                      break;

              case 值 2:                     

                       // 要做的事情

                       break;

              case 值 3:

                       // 要做的事情

                       break;

              default:    // 当表达式的值与前面所有 case 块的值都不相等时,才会执行。

                       // 要做的事情

         }

注意点:  省略 break 后的注意点                           //  笔试题 会考!!!!!!!!!!!!!

        省略 break 后的执行流程,拿 switch 表达式的值,依次与每个 case 块的值进行比较。

        当遇到一个相等的值后,将直接执行所有的执行性代码,

                  在遇到 break 语句之前,不会与 case 块的值进行比较,而是直接执行代码。

        省略 break 几乎没有太大的价值。

        建议:每次写了 case 之后,在写其他代码之前,立即写 break

SwitchTest 程序 及 运行结果:

public class SwitchTest

{

    public static void main(String[] args)

    {

        char score = 'B';

        switch (score)

        {

            case 'A':

            System.out.println("优秀");

            break;

            case 'B':

            System.out.println("良好");

            break;

            case 'C':

            System.out.println("中");

            break;

            case 'D':

            System.out.println("及格");

            break;

            default:

            System.out.println("不及格");

            break;

        }

    }

}

SwitchTest

SwitchTest 程序 及 运行结果:

public class Switch省略break

{

    public static void main(String[] args)

    {

        char score = 'B';

        switch (score)

        {

            case 'A':

            System.out.println("优秀");

            case 'B':

            System.out.println("良好");

            case 'C':

            System.out.println("中");

            case 'D':

            System.out.println("及格");

            default:

            System.out.println("不及格");

        }

    }

}

Switch省略break

以下是一个小例子:

活动安排,内有自动获取系统时间并提取周几,然后根据设置的周几输出要做的事情,可以修改系统时间来输出不同的活动安排。

ActionSchedule  程序 及 运行结果:

import java.util.*;

import java.text.*;

public class ActionSchedule

{

    public static void main(String[] args)

    {

        // 获取系统当前时间

        Date date = new Date();

        // System.out.println(date); // 显示英文的日期

        // 创建一个 DateFormat 的实例,DateFormat 的作用是把日期转换成人看的懂的格式的字符串

        DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);

        // System.out.println(df.format(date));  // 显示出来年月日  周几  2017年8月2日 星期三

        String str = df.format(date);  // 输出 2017年8月2日 星期三

        int spacePos = str.indexOf(" "); // 获取" "在前面字符串中的位置

        // spacePos代表空格的位置,spacePos+1 代表空格后面的字符

        // 截取从空格后面的字符开始,直到结束的字符串

        String day = str.substring(spacePos + 1);

        switch (day)

        {

            case "星期一":

            System.out.println("去跑步");

                break;

            case "星期二":

            System.out.println("王者荣耀找人开黑");

                break;

            case "星期三":

            System.out.println("去找宝贝玩耍");

                break;

            case "星期四":

            System.out.println("去lol");

                break;

            case "星期五":

            System.out.println("去购物");

                break;

            case "星期六":

            System.out.println("去健身");

                break;

            case "星期日":

            System.out.println("睡觉");

                break;

        }

    }

}

ActionSchedule

循环:while 、do while、for、for each

循环(loop):回圈

把一段重复的代码执行多次,直到满足某个条件为止。

为了在合适的时候,停止重复执行,需要让程序出现满足停止循环的条件。

while循环:

while( 返回 boolean 值的表达式)  // 只要 while 中表达式为 true,循环将会一直执行。

{

      //  需要重复做的事情

}

如果循环体只有一条代码,可以省略花括号。

规则:如果省略了花括号,while 条件只控制到第一个分号(;)前面

建议:即使循环体只有一行代码,也包括花括号。

WhileTest 程序 及 运行结果:

public class WhileTest

    {

    public static void main(String[] args)

    {

        int i = 0;

        while(i < 10)

        {

            System.out.println("i的值为: " + i++);

        }

    }

}

WhileTest

WhileError省略花括号 程序 及 运行结果:

public class WhileError

{

    public static void main(String[] args)

    {

        int i = 0;

        while(i < 10)

        i ++;  //  先知循环本条语句,直到 i 为10 时 false,跳出循环,输出为 10

        System.out.println("i的值为: " + i++);

    }

}

WhileError

WhileError2 (while 后面有分号 陷阱) 程序 及 运行结果:

public class WhileError2

{

    public static void main(String[] args)

    {

        int i = 0;

        while(i++ < 10); // 同注意分号,但是此时i可以加到 10,然后false跳出循环(此时i为11)到 i++,最后输出12

        // while(i < 10);  // 注意本句后面的分号,分号意思本句就结束,所以这是一个死循环

        {

            i ++;

            System.out.println("i的值为: " + i);

        }

    }

}

do while 循环:

do

{

}while ( 返回 boolean 值的表达式)

    这个与 while 相比,把循环放在前面。

    先执行一次循环体,如果条件为 true ,执行下一次循环

    对于 do while 来说,无论如何,循环至少会执行一次。

for 循环:

for( 初始化语句 ; 返回 boolean 值的表达式 ; 每次循环体执行完后执行的代码 )

{

}

  “初始化语句”可以省略。

        如果有“初始化语句”,只有循环开始之前,会执行一次“初始化语句”

        初始化语句可以一次定义多个变量!

  “返回 boolean 值的表达式”可以省略。

        如果省略,意味着它的值永远是 true

  “每次循环体执行完后执行的代码”可以省略。

        如果有“每次循环体执行完后执行的代码” ,将在每次循环体执行完成之后,开始下一次循环体之前,执行该代码。

只要两个分号之间的表达式返回 true ,程序将执行循环体。

ForTest  程序 及 运行结果:

for(int i = 0;i < 10;i++)

{

    System.out.println("i的值为" + i);

}

ForTest

ForTest2  程序 及 运行结果:

for(int i = 0;i < 10;i++)

{                                  // i = (int)(i*0.2)

    System.out.println("i的值为" + (i *= 0.2));

    // *=  强转小数为整型,所以不可能出现小数,所以结果一直为0

}

ForTest2

循环嵌套:

在循环里面,再放置循环——就是嵌套循环

把内层循环当成外层循环的一条语句即可。

循环嵌套  程序 及 运行结果:

int i = 0;

while(++i < 10)

{

    System.out.println("进入外层循环");

    for(int j = 0;j < 10;j++)

{

    System.out.println("i的值是" + i + ",j的值是" + j);

}

    System.out.println("外层循环的最后一行");

}

循环嵌套

控制循环的关键词:break、continue、return

break  完全结束一个循环本身。

continue    停止当前循环体的执行(相当于【忽略 continue 后的语句】),开始下一次循环体

                  如果 continue 位于循环体的最后一部分,它就是多余的

return    结束整个方法。  遇到 return ,方法就会结束执行。

break 、continue 后可以紧跟标号。

              带标号的 break 用于结束标号所标识的循环。

              带标号的 continue 用于忽略标号所标识的循环后面剩下的语句。

ContinueTest  程序 及 运行结果:

public class ContinueTest

{

    public static void main(String[] args)

    {

        for(int i = 0;i < 10;i ++)

        {

            System.out.println("i的值是" + i);

            if(i > 3)  // 当 i > 3 时,continue 执行,忽略后面的print语句,直接跳到 for

            {

                continue;

            }

            System.out.println("----------------");

        }

    }

}

ContinueTest

ReturnTest  程序 及 运行结果:

public class ReturnTest

{

    public static void main(String[] args)

    {

        int i = 0;

        while(++i < 10)

        {

            System.out.println("进入外层循环");

            for(int j = 0;j < 10;j++)

            {

                for(int k = 0;k < 20;k++)

                {

                    System.out.println("i的值是" + i

                                              + ",j的值是" + j

                                              + ",k的值是" + k);

                    if(k > 3)    //当 k > 3 时,执行 return ,结束整个方法 

                    {

                        return;

                    }

                    }

                }

               System.out.println("外层循环的最后一行");

            }

    }

}

ReturnTest

LabelTest  程序(带标号的 break) 及 运行结果:

outer:

for(int i = 0;i < 10;i ++)

{

    for(int j = 0;j < 10;j ++)

    {

        System.out.println("i的值为" + i + ",j的值为" + j);

        if(j > 3)

        {

            break outer;//带标号的循环用于结束标号所在循环的循环

        }

    }

}  // 当 j = 4 时,执行  break outer,此时结束 标号 outer 所在的循环,即结束输出

LabelTest

ContinueLabel  程序(带标号的 continue) 及 运行结果:

outer:

for(int i = 0;i < 10;i ++)

{

    for(int j = 0;j < 10;j ++)

    {

        System.out.println("i的值为" + i + ",j的值为" + j);

        if(j > 3)

        { 

            continue outer;//带标号的 continue 用于忽略标号所在循环的循环的剩下语句

        }        //  当 j = 4时,执行 continue outer,忽略标号所在循环的循环剩下语句,即忽略后三个},直接又到了 for(int i = 0;i < 10;i ++)  循环,最终结果输出 50 次

    }

}    

ContinueLabel

ContinueLabel2 程序(带标号的 continue) 及 运行结果:

outer:

for(int i = 0;i < 10;i ++)

{

    for(int j = 0;j < 10;j ++)

    {

        System.out.println("i的值为" + i + ",j的值为" + j);

        if(i > 3)   //  注意,这里与上个程序的区别,j 换成 i !!!!!!!

        {

            continue outer;//带标号的 continue 用于忽略标号所在循环的循环的剩下语句

        }    //  i = 4 时,输出 40 后判断 i>3,则忽略标号所在循环的循环的剩下语句,直接跳到 for(int i = 0;i < 10;i ++) 循环,i 加一 为 5 > 3, 以此类推,后面值输出   40,50,60,70,80,90  共输出 46 个值

    }

}

ContinueLabel2

练习:

在控制台用 * 打印大小可控制的圆。

点我跳转打印圆    

以上,未完


写在最后:

总结一下互联网行业的一些缩写,昨天 FE 小哥哥问我,你知道 FE 是啥吗,气氛一度迷之尴尬……

PM:(project manager)现一般指的都是产品经理

RD:(Research and Development)研发

如:软件RD工程师就是软件研发工程师,诸如php程序猿,Java程序猿,无论是爱疯的还是安卓的都是属于这一类别。偏向于后端的技术实现。

FE:(Front-End)前端,前端开发(Front-End Development)

FE是web前端研发、前端开发的意思!前端工程师基于需求根据视觉设计稿、交互设计稿,实现前端界面显示及交互行为的过程。

UE:(User Experience,简称UX或 UE)用户体验

UI:  (User Interface)用户界面。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。

QA: (QUALITY ASSURANCE,中文意思是“质量保证”)测试

OP:(Operations)运维

DBA:(Database Administrator,简称DBA)数据库管理员

DB:既数据库(Database)。

今天周三,想想都一周了啊,时间过的真的快啊,马上要周六了哈哈,就又能见到腻了那~

打道回府,感冒好烦~

   

相关文章

  • Java知识之流程控制

    Java流程控制框架图 流程控制 一. 循环结构二. 分支结构三. 顺序结构 循环结构 for循环,for-eac...

  • Java核心基础第3篇-Java流程控制

    Java流程控制 本章一起来探讨下Java的流程控制语句。主要从以下几个方面展开: Java分支语句 Java循环...

  • Java的流程控制结构

    流程控制结构 分支结构ifswitch 循环结构whiledo whileforforeach Java提供了co...

  • Java流程控制 (分支与循环)

    流程控制 目录:顺序结构分支循环循环嵌套控制循环的关键词 总会出现一种场景:要满足某个条件时,才去做一件事情。 ...

  • [JS基础]笔记四

    js流程控制语句 流程控制 顺序结构、分支结构、循环结构 分支结构 if 分支结构 if else 双分支结构语句...

  • 重拾Java (三)流程控制语句

    重拾Java第三篇,流程控制语句,基础喔 分支结构 选择结构 循环结构 while循环,while(判断条件),当...

  • Java系列(三)流程控制和数组

    流程控制 基本所有的编程语言,基本都会提供两种流程控制结构:分支结构和循环结构。 Java语言中提供了 if 和 ...

  • Kotlin——流程控制

    与Java类似,Kotlin同样提供了两种基本的流程控制结构:分支结构和循环结构 顺序结构 在任何编程语言中最常见...

  • 3.Java流程控制

    程序流程控制 流程控制语句: 顺序结构:是程序的默认结构 分支结构 循环结构 分支结构 if 根据判定的结果(真或...

  • Axure系列教程(三):流程图之if和else

    流程图可以引申为流程控制,流程控制又分为顺序结构,分支结构,循环结构。今天所说的if和else是属于分支结构(选择...

网友评论

      本文标题:Java流程控制 (分支与循环)

      本文链接:https://www.haomeiwen.com/subject/twtslxtx.html