你们的曙光带着JAVA总结的第三幕又来了

流程控制语句

1 键盘录入

键盘输入(Scanner)使用的是引用数据类型

引用数据类型使用的一般步骤:

  • 导包 import java.util.Scanner

  • 创建变量 引用数据类型 变量名 = new 引用数据类型(参数);

  • 使用变量 变量名.方法名();

public static void main(String[] args) {
        // 创建变量
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        // 使用变量
        int a = s.nextInt();
//        byte b = s.nextByte();
//        s.nextDouble();
        System.out.println(a);
//        String str = "哈哈";
        System.out.println("请输入一个字符串:");
        String string = s.next();
        System.out.println(string);
    }

2 流程控制语句

2.1 概述

在一个程序执行的过程中,各条语句的执行顺序对程序的结果有直接的影响。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

  • 分类

    • 顺序结构

    • 选择结构

    • 循环结构

2.2 顺序结构

顺序结构是最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行。程序中大多数的代码都是这样执行的。

        int a = 10;
        a = 30;
        a = 20;
        System.out.println(a);

 

  • 顺序结构的流程图

 

2.3 选择结构

2.3.1 概述

  • 选择结构也称之为分支结构

  • 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断。逻辑运算的结构有两个,所以产生选择,按照不同的选择执行不同的代码。

  • java语言提供了两种选择结构语句

    • if语句

    • switch语句

 

2.3.2 if语句

2.3.2.1 if语句格式一

  • 格式

if (布尔表达式){
    语句体;
}

 

  • 执行流程

    •  

      首选判断布尔表达式的结果是true还是false
    • 如果是true,就执行语句体

    • 如果是false,就不执行语句体

  • 流程图

注意:如果if语句的{}中只有一行代码,可以省略大括号

 

 

public static void main(String[] args) {
        System.out.println("一天晚上没事干,在大街上溜达");
        System.out.println("走到一个成人娱乐场所");
        System.out.println("请输入您的年龄:");
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        if (age >= 18){
            System.out.println("出示身份证");
            System.out.println("上机");
            System.out.println("上号");
            System.out.println("开始打游戏");
            System.out.println("挂机骂人");
            System.out.println("下机");
        }
        System.out.println("没意思,回家睡觉");
    }

 

2.3.2.2 if语句格式二

  • 格式

if (布尔表达式){
    语句体1;
}else {
    语句体2;
}
  • 执行流程

    • 首先判断布尔表达式的结果是true还是false

    • 如果是true,就执行语句体1

    • 如果是false,就执行语句体2

  • 流程图

public static void main(String[] args) {
        // 输入一个整数,判断是奇数还是偶数
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if (num % 2 == 0){
            System.out.println(num + ":是偶数");
        }else {
            System.out.println(num + ":是奇数");
        }
    }

2.3.2.3 if语句格式三

  • 格式

if (布尔表达式1){
    语句体1;
}else if(布尔表达式2){
    语句体2;
}else if(布尔表达式3){
    语句体3;
}...
else if(布尔表达式n){
    语句体n;
}else{
    语句体n+1;
}

 

  • 执行流程

    • 首先判断布尔表达式1的结果是true还是false

    • 如果是true就执行语句体1

    • 如果是false就继续判断布尔表达式2的结果是true还是false

    • 如果是true就执行语句体2

    • 如果是false就继续判断布尔表达式3的结果是true还是false

    • ...

    • 如果所有的布尔表达式全部都是false,执行语句体n+1

  • 流程图

public static void main(String[] args) {
        // 根据用户的年龄,输出所在的阶段
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您的年龄");
        int age = scanner.nextInt();
        if (age > 0 && age <= 1){
            System.out.println("婴儿");
        }else if (age > 1 && age <= 7){
            System.out.println("幼儿");
        }else if (age > 7 && age <= 12){
            System.out.println("儿童");
        }else if (age > 12 && age <= 18){
            System.out.println("少年");
        }else if (age > 18 && age <= 35){
            System.out.println("青年");
        }else if (age > 35 && age <= 65){
            System.out.println("中年");
        }else if (age > 65 && age <= 110){
            System.out.println("老年");
        }else {
            System.out.println("您输入的年龄不合法");
        }
    }

 

课堂练习:

  • x和y的关系满足如下:

x >= 3     y = 2x + 1;
-1 < x < 3  y = 2x;
x <= -1     y = 2x - 1;

根据给定的x的值,计算出y的值并输出

	// 获取x的值
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int y;
        if (x >= 3){
            y = 2 * x + 1;
        }else if (x > -1 && x < 3){
            y = 2 * x;
        }else{
            y = 2 * x - 1;
        }
        System.out.println("y的值是" + y);

 

  • 根据用户输入的月份,输出正确的季节

public static void main(String[] args) {
//        根据用户输入的月份,输出正确的季节
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        if (month >= 3 && month <= 5){
            System.out.println("春天去赏花");
        }else if (month >= 6 && month <= 8){
            System.out.println("夏天去游泳");
        }else if (month >= 9 && month <= 11){
            System.out.println("秋天去钓鱼");
        }else if (month == 12 || month == 1 || month == 2){
            System.out.println("冬天打雪仗");
        }else {
            System.out.println("输入的月份不对");
        }
    }

2.3.3 switch语句

  • 格式

switch(表达式){
    case 目标值1:
        语句体1;
        break;
    case 目标值2:
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}
  • 格式解释:

    • switch表示这是一个switch语句

    • 表达式的类型:byte,short,int,char

    • JDK5之后可以是枚举

    • JDK7以后可以是String

    • case后面跟的是要和表达式进行比较的值

    • 语句体是一条或者多条语句

    • break表示中断,结束的意思,可以立即结束switch语句

    • default语句表示所有情况都不匹配时执行的语句

  • 流程图

  • 注意事项:

    • switch中的语句,顺序不影响最终的结果

    • case具有穿透效果,如果没有break的影响,那么会一直向下执行

 

 

public static void main(String[] args) {
        int i = 2;
        switch (i){
            case 3:
                System.out.println("3月下扬州");
                break;
            case 6:
                System.out.println("6月小雨");
                break;
            case 9:
                System.out.println("9月去喝啤酒");
                break;
            default:
                System.out.println("来郑州玩方特");
                break;
        }
    }

 

  • 根据用户输入的数值,显示对应星期几

public static void main(String[] args) {
        // 获取用户输入的数值
        Scanner scanner = new Scanner(System.in);
        int weekday = scanner.nextInt();
        // 判断数字,输出星期几
        switch (weekday){
            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;
        }
    }
  • 根据用户输入的月份,显示正确的季节

public static void main(String[] args) {
        // 根据用户输入的月份,显示正确的季节
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        switch (month){
            case 3:
            case 4:
            case 5:
                System.out.println("春天");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏天");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋天");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬天");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
    }
public static void main(String[] args) {
        // 根据用户输入的月份,显示正确的季节
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        switch (month){
            case 3,4,5:
                System.out.println("春天");
                break;
            case 6,7,8:
                System.out.println("夏天");
                break;
            case 9,10,11:
                System.out.println("秋天");
                break;
            case 12,1,2:
                System.out.println("冬天");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
    }
public static void main(String[] args) {
        // 获取用户输入的城市
        Scanner scanner = new Scanner(System.in);
        String cityName = scanner.next();
        String provinceName = switch (cityName){
            case "郑州","洛阳","开封" -> {
                System.out.println("中原地带");
                yield "河南省";
            }
            case "武汉" -> "湖北省";
            case "深圳" -> "广东省";
            case "张家口" -> "河北省";
            default -> "妈妈省的";
        };
        System.out.println(provinceName);
    }

2.4 循环结构

2.4.1 概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码就称之为循环体语句。

2.4.2 循环语句的组成

  • 初始化表达式

    • 一条或者多条语句,这些语句完成一些初始化操作

  • 布尔表达式

    • 这个表达式决定是否要执行循环体

  • 循环体

    • 就是我们要多次执行的事情

  • 步进表达式

    • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行.通过用于控制循环条件中的变量,使得循环在合适的时候结束。

 

2.4.3 循环结构for

  • 格式

for (初始化表达式1;布尔表达式2;步进表达式4){
    循环体3;
}
  • 执行顺序: 1 2 3 4 2 3 4 ....2不满足为止

  • 流程图

练习:打印100次HelloWorld

// 打印100次HelloWorld
        for (int i = 1;i <= 100;++i){
            System.out.println("HelloWorld" + i);
        }
  • 打印输出5-1

		// 打印输出5-1
        for (int i = 5;i >= 1;i--){
            System.out.println(i);
        }
  • 求1-100之间的偶数和

// 求1-100之间的偶数和
        // 获取1-100之间所有的偶数
        // 定义变量代表和
        int sum = 0;
        for (int i = 1;i <= 100;i++){
            // 判断i是否是偶数
            if (i % 2 == 0){
                sum += i;
            }
        }
        System.out.println("和是" + sum);
  • 统计所有的”水仙花数“有多少个

    • "水仙花数"是一个三位数,其个数的立方+十位的立方+百位的立方 等于其本身

    • 153 = 3 * 3 * 3 + 5 * 5 * 5 + 1 = 126 + 27 = 153

// 定义变量,表示计数器
        int count = 0;
        // 统计所有的”水仙花数“有多少个
        for (int i = 100;i < 1000;i++){
            // 求个位 十位和 百位
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;
            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i){
                System.out.println("水仙花数是" + i);
                count++;
            }
        }
        System.out.println("水仙花数有" + count + "个");

2.4.4 循环结构while

  • 基本格式:

while (布尔表达式){
	循环体语句;
}
  • 扩展格式

初始化表达式1;
while (布尔表达式2){
    循环体语句3;
    步进表达式4;
}
  • 执行顺序: 1 2 3 4 2 3 4 ....2不满足为止

  • 流程图

练习:

  • 统计水仙花数有多少个

// 统计水仙花数有多少个
        int i = 100;
        // 计数器
        int count = 0;
        while (i < 1000){
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i){
                count++;
            }
            i++;
        }
        System.out.println("水仙花数有" + count + "个");

 

  • 统计1-100之间所有的奇数和

// 求1-100之间的奇数和
        int i = 1;
        // 定义变量,记录和
        int sum = 0;
        while (i <= 100){
            // 判断i是否是奇数
            if (i % 2 != 0){
                sum += i;
            }
            i++;
        }
        System.out.println("奇数和是" + sum);
public static void main(String[] args) {
        // 求1-100之间的奇数和
        int i = 1;
        // 定义变量,记录和
        int sum = 0;
        while (i <= 100){
            sum += i;
            i += 2;
        }
        System.out.println("奇数和是" + sum);
    }

2.4.5 循环结构do-while

  • 基本格式

do{
    循环体语句;
}while(布尔表达式);
  • 扩展格式

初始化表达式1;
do{
    循环体3;
    步进表达式4;
}while(布尔表达式2);
  • 执行流程:1 3 4 2 3 4...2不满足为止

  • 流程图

// 打印1-100
        int i = 1;
        do {
            System.out.println(i++);
        }while (i <= 100);

2.4.6 三种循环的区别

  • dowhile循环至少会执行一次循环体

        Scanner scanner = new Scanner(System.in);
//        String str = "y";
//        while ("y".equals(str)){
//            System.out.println("石头");
//            System.out.println("是否继续?y/n");
//            str = scanner.next();
//        }
        String str;
        do {
            System.out.println("剪刀");
            System.out.println("是否继续?y/n");
            str = scanner.next();
        }while ("y".equals(str));
  • 控制条件语句所控制的那个变量,在for循环结束后就不能再使用了,但是while循环结束后依然可以使用,所以for循环内存空间利用率更高

		for (int i = 1;i > 100;i++){
            System.out.println(i);
        }
        
        // 打印1-100
        int i = 1;
        do {
            System.out.println(i++);
        }while (i > 100);

2.4.7 跳转控制语句

  • 让循环在某一步的时候结束或者跳过某些数据。

    • break 中断

    • continue继续

  • break的使用场景

    • 在switch中表示立即结束switch语句

    • 在循环语句中表示立即结束循环

  • continue的使用场景

    • 在循环语句中表示跳过当前循环,继续下一次循环

  • 如果有多个循环嵌套,break和continue只作用于最近的循环

	for (int i = 1;i < 10;i++){
            System.out.println("i = " + i);
            for (int j = 1;j < 10;j++){
                if (j == 3) break;
                System.out.println("j = " + j);
            }
        }

2.5 死循环

如果循环的条件一直满足,循环就不会停下来,产生了死循环,也称之为叫无限循环、永真循环

 

        while (true){}// 推荐
//        for (;true;){}
//        for (;;){}

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值