流程控制语句

流程控制语句

1 流程控制
1.1 概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
1.2 顺序结构
顺序结构的流程图如下:在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 * 顺序结构
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo01Sequence {
    public static void main(String[] args) {
        System.out.println("今天天气不错");
        System.out.println("挺风和日丽的");
        System.out.println("我们下午没课");
        System.out.println("这的确挺爽的");
    }
}

2 判断语句
2.1 判断语句1–if
if语句第一种格式如下:

if(关系表达式){
    语句体;

执行流程
首先判断关系表达式看其结果是true还是false。
如果是true就执行语句体。
如果是false就不执行语句体。
流程图如下:在这里插入图片描述
Java实现的代码如下:

package com.txw.test;

/**
 * 单if语法
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo02If {
    public static void main(String[] args) {
        System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
        int age = 19;
        if (age >= 18) {
            System.out.println("进入网吧,开始high!");
            System.out.println("遇到了一群猪队友,开始骂街。");
            System.out.println("感觉不爽,结账走人。");
        }
        System.out.println("回家吃饭");
    }
}

2.2 判断语句2–if…else
if…else语句的格式如下:

 if(关系表达式) { 
    语句体1;
}else {
    语句体2;
}

执行流程:
首先判断关系表达式看其结果是true还是false。
如果是true就执行语句体1。
如果是false就执行语句体2。
流程图如下:在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 * // 标准的if-else语句
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo03IfElse {
    public static void main(String[] args) {
        int num = 666;
        if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}

2.3 判断语句3–if…else if…else
if…else if …else语句的格式如下:

if (判断条件1) {
    执行语句1;
} else if (判断条件2) {
    执行语句2;
}
...
}else if (判断条件n) {
    执行语句n;
} else {
    执行语句n+1;
}

执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1。
流程图如下:
在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 * x和y的关系满足如下:
 *  如果x >= 3,那么y = 2x + 1;
 *  如果-1 < x < 3,那么y = 2x;
 *  如果x <= -1,那么y = 2x – 1;
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo04IfElseExt {
    public static void main(String[] args) {
        int x = -10;
        int y;
        if (x >= 3) {
            y = 2 * x + 1;
        } else if (-1 < x && x < 3) {
            y = 2 * x;
        } else {
            y = 2 * x - 1;
        }
        System.out.println("结果是:" + y);
    }
}

2.4 语句练习
题目:
指定考试成绩,判断学生等级
90-100 优秀
80-89 好
70-79 良
60-69 及格
60以下 不及格
Java实现代码如下:

package com.txw.test;

/**
 * 指定考试成绩,判断学生等级
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo05IfElsePractise {
    public static void main(String[] args) {
        int score = 120;
        if (score >= 90 && score <= 100) {
            System.out.println("优秀");
        } else if (score >= 80 && score < 90) {
            System.out.println("好");
        } else if (score >= 70 && score < 80) {
            System.out.println("良");
        } else if (score >= 60 && score < 70) {
            System.out.println("及格");
        } else if (score >= 0 && score < 60) {
            System.out.println("不及格");
        } else { // 单独处理边界之外的不合理情况
            System.out.println("数据错误");
        }
    }
}

2.5 if语句和三元运算符的互换
在某些简单的应用中,if语句是可以和三元运算符互换使用的。
Java实现代码如下:

package com.txw.test;

/**
 * 题目:使用三元运算符和标准的if-else语句分别实现:取两个数字当中的最大值
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo06Max {
    public static void main(String[] args) {
        int a = 105;
        int b = 20;
        // 首先使用三元运算符
        // int max = a > b ? a : b;
        // 使用今天的if语句
        int max;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }
        System.out.println("最大值:" + max);
    }
}

3 选择语句
3.1 选择语句–switch
switch语句格式如下:

switch(表达式) {
  case 常量值1:
    语句体1;
    break;
  case 常量值2:
    语句体2;
    break;
  ...
  default:
    语句体n+1;
    break;
}

执行流程
首先计算出表达式的值。
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
流程图如下:在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 * switch语句
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo07Switch {
    public static void main(String[] args) {
        int num = 10;
        switch (num) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("数据不合理");
                break; // 最后一个break语句可以省略,但是强烈推荐不要省略
        }
    }
}

小贴士:
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。
3.2 case的穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
Java实现代码如下:

package com.txw.test;

/**
 * switch语句使用的注意事项:
 * 1. 多个case后面的数值不可以重复。
 * 2. switch后面小括号当中只能是下列数据类型:
 * 基本数据类型:byte/short/char/int
 * 引用数据类型:String字符串、enum枚举
 * 3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
 * “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo08SwitchNotice {
    public static void main(String[] args) {
        int num = 2;
        switch (num) {
            case 1:
                System.out.println("你好");
                break;
            case 2:
                System.out.println("我好");
                // break;
            case 3:
                System.out.println("大家好");
                break;
            default:
                System.out.println("他好,我也好。");
                break;
        } // switch
    }
}

4 循环语句
4.1 循环概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
4.2 循环语句1–for
for循环语句格式如下:

for(初始化表达式①; 布尔表达式②; 步进表达式④){
        循环体③
}

执行流程
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环条件所涉及变量的变化情况。
流程图如下:在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 *循环结构的基本组成部分,一般可以分成四部分:
 * 1. 初始化语句:在循环开始最初执行,而且只做唯一一次。
 * 2. 条件判断:如果成立,则循环继续;如果不成立,则循环退出。
 * 3. 循环体:重复要做的事情内容,若干行语句。
 * 4. 步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo09For {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            System.out.println("我错啦!原谅我吧!" + i);
        }
        System.out.println("程序停止");
    }
}

循环练习:使用循环,计算1-100之间的偶数和的Java实现代码如下:

package com.txw.test;

/**
 *题目:求出1-100之间的偶数和。
 * 思路:
 * 1. 既然范围已经确定了是1到100之间,那么我就从1、2、3……一直到100这么多数字一个一个进行检查。
 * 2. 总共有100个数字,并非所有数字都能用。必须要是偶数才能用,判断(if语句)偶数:num % 2 == 0
 * 3. 需要一个变量,用来进行累加操作。也就好比是一个存钱罐。
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo10HundredSum {
    public static void main(String[] args) {
        int sum = 0; // 用来累加的存钱罐
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) { // 如果是偶数
                sum += i;
            }
        }
        System.out.println("结果是:" + sum);
    }
}

4.3 循环语句2–while
while循环语句格式的如下:

初始化表达式①
  while(布尔表达式②){
    循环体③
    步进表达式④
}

执行流程:
执行顺序:①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
流程图如下:在这里插入图片描述
Java实现代码如下:

package com.txw.test;

/**
 *while循环有一个标准格式,还有一个扩展格式。
 * 标准格式:
  while (条件判断) {
  	循环体
  }
  扩展格式:
  初始化语句;
  while (条件判断) {
  	循环体;
  	步进语句;
  }
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo11While {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println("我错啦!" + i);
        }
        System.out.println("=================");
        int i = 1; // 1. 初始化语句
        while (i <= 10) { // 2. 条件判断
            System.out.println("我错啦!" + i); // 3. 循环体
            i++; // 4. 步进语句
        }
    }
}

4.4 循环语句3–do…while
do…while循环格式如下:

初始化表达式①
    do{
    循环体③
    步进表达式④
}while(布尔表达式②);

执行流程
执行顺序:①③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
Java实现代码如下:

package com.txw.test;

/**
 *do-while循环的标准格式:
  do {
  	循环体
  } while (条件判断);
  扩展格式:
  初始化语句
  do {
  	循环体
  	步进语句
 } while (条件判断);
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo12DoWhile {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println("原谅你啦!起来吧!地上怪凉!" + i);
        }
        System.out.println("===============");
        int i = 1; // 1. 初始化语句
        do {
            System.out.println("原谅你啦!起来吧!地上怪凉!" + i); // 3. 循环体
            i++; // 4. 步进语句
        } while (i <= 10); // 2. 条件判断
    }
}

4.5 循环语句的区别
for 和 while 的小区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。
Java实现代码如下:

package com.txw.test;

/**
 * 三种循环的区别。
 * 1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
 * 2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo13LoopDifference {
    public static void main(String[] args) {
        for (int i = 1; i < 0; i++) {
            System.out.println("Hello");
        }
        // System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
        System.out.println("================");
        int i = 1;
        do {
            System.out.println("World");
            i++;
        } while (i < 0);
        // 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
        System.out.println(i); // 2
    }
}

4.6 跳出语句
break
使用场景:终止switch或者循环。
在选择结构switch语句中。
在循环语句中。
离开使用场景的存在是没有意义的。
Java实现代码如下:

package com.txw.test;

/**
 * break关键字的用法有常见的两种:
 * 1. 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
 * 2. 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
 * 关于循环的选择,有一个小建议:
 * 凡是次数确定的场景多用for循环;否则多用while循环。
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo14Break {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            // 如果希望从第4次开始,后续全都不要了,就要打断循环
            if (i == 4) { // 如果当前是第4次
                break; // 那么就打断整个循环
            }
            System.out.println("Hello" + i);
        }
    }
}

continue
使用场景:结束本次循环,继续下一次的循环。
Java实现代码如下:

package com.txw.test;

/**
 *另一种循环控制语句是continue关键字。
 * 一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo15Continue {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 4) { // 如果当前是第4层
                continue; // 那么跳过当前次循环,马上开始下一次(第5层)
            }
            System.out.println(i + "层到了。");
        }
    }
}

4.7 死循环
死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用到跳出语句了。
Java实现代码如下:

package com.txw.test;

/**
 *永远停不下来的循环,叫做死循环。
 *死循环的标准格式:
  while (true) {
  	循环体
  }
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo16DeadLoop {
    public static void main(String[] args) {
        while (true) {
            System.out.println("I Love Java!");
        }
        // System.out.println("Hello");
    }
}

4.8 嵌套循环
所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数。
嵌套循环格式如下:

for(初始化表达式①; 循环条件②; 步进表达式⑦) {
    for(初始化表达式③; 循环条件④; 步进表达式⑥) {
        执行语句⑤;
    }
}

嵌套循环执行流程:
执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循环一次,内循环多次。
比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。
Java实现代码如下:

package com.txw.test;

/**
 *循环嵌套
 * @author:Adair
 * @QQ:1578533828
 */
@SuppressWarnings("all")     // 注解警告信息
public class Demo17LoopHourAndMinute {
    public static void main(String[] args) {
        for (int hour = 0; hour < 24; hour++) { // 外层控制小时
            for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
                System.out.println(hour + "点" + minute + "分");
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值