首页 > 其他分享 >流程控制语句

流程控制语句

时间:2024-05-15 15:31:14浏览次数:14  
标签:语句 控制 int 流程 System println 表达式 out

流程控制语句

1 Scanner控制台输入

使用方式:

  • 导包:
import java.util.Scanner;
  • 创建变量
Scanner 变量名 = new Scanner(System.in);
  • 使用
变量名.nextInt();
public static void main(String[] args) {
        // 获取用户键盘录入的信息
        Scanner scanner = new Scanner(System.in);
        // 使用方法获取用户输入的信息  用户使用键盘输入数字回车后,会把数字赋值给i
        System.out.println("请输入一个整数:");
        int i = scanner.nextInt();
        System.out.println("i的值是" + i);
    }

2 流程控制语句

2.1 概述

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

分类:

  • 顺序结构
  • 选择结构
  • 循环结构

2.2 顺序结构

代码按照行号从上到下执行就是顺序结构。

public static void main(String[] args) {
        System.out.println("一天晚上");
        System.out.println("两个和尚");
        System.out.println("三更半夜");
        System.out.println("四处流浪");
    }

2.3 选择结构

选择结构也称之为分支结构。又分为if语句和switch语句。

2.3.1 if语句

if语句分为三种格式

第一种格式:

​ if (布尔表达式){

​ 代码;

}

如果布尔表达式的结果是true,那么就会执行if语句的{}中的代码,如果布尔表达式的结果是false,那么就不会执行{}中的代码。

流程图:

image-20231211103726639

注意点:如果if语句结构中只有一行代码,可以省略{}

public static void main(String[] args) {
        // 让用户输入一个年龄,判断是否可以进成人娱乐场所
        System.out.println("一个人闲的没事在游荡");
        System.out.println("发现一个成人娱乐场所");
        // 创建Scanner
        Scanner scanner = new Scanner(System.in);
        // 提供用户输入年龄
        System.out.println("请输入您的年龄:");
        // 获取用户录入的年龄
        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("回家睡觉~");
    }

第二种格式:

if (布尔表达式){

语句1;

}else{

语句2;

}

执行流程:

​ 如果布尔表达式的结果是true,那么执行语句1

​ 如果布尔表达式的结果是false,那么执行语句2

流程图

image-20231211110255168

练习:用户输入一个整数,判断是奇数还是偶数

public static void main(String[] args) {
//        用户输入一个整数,判断是奇数还是偶数
        // 创建Scanner
        Scanner scanner = new Scanner(System.in);
        // 提醒用户输入整数
        System.out.println("请输入一个整数:");
        // 获取用户输入的整数
        int num = scanner.nextInt();
        // 判断是奇数还是偶数  如果能够被2整除 就是偶数 否则就是奇数
        if (num % 2 == 0){
            System.out.println(num + "是偶数");
        }else {
            System.out.println(num + "是奇数");
        }
    }

第三种格式:

if (布尔表达式1){

语句1;

}else if(布尔表达式2){

语句2;

}else if(布尔表达式3){

语句3;

}

...

else {

语句n;

}

执行流程:

  • 首先判断布尔表达式1结果是true还是false
  • 如果是true执行语句1,整个流程结束
  • 如果是false就继续判断布尔表达式2的结果是true还是false
  • 如果是true执行语句2,整个流程结束
  • 如果是false就继续判断布尔表达式3的结果是true还是false
  • 如果是true就执行语句3,整个流程结束
  • 如果是false就继续判断...
  • 如果所有的布尔表达式的结果都是false,就执行else中的语句n,整个流程结束

流程图

image-20231211111907915

练习:

x和y的关系满足如下:
x>= 3     y = 2x + 1
-1<x<3    y = 2x
x<=-1     y= 2x - 1
给定一个x的值,获取y的值
public static void main(String[] args) {
        /*
        * x和y的关系满足如下:
            x>= 3     y = 2x + 1
            -1<x<3    y = 2x
            x<=-1     y= 2x - 1
            给定一个x的值,获取y的值
        * */
        // 创建Scanner
        Scanner scanner = new Scanner(System.in);
        // 获取用户输入的数字
        int x = scanner.nextInt();
        int y;
        if (x >= 3){
            y = 2 * x + 1;
        }else if (x < 3 && x > -1){
            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 == 1 || month == 2 || month == 3){
            System.out.println("浅草才能没马蹄");
        }else if (month == 4 || month == 5 || month == 6){
            System.out.println("夏天去河里游泳~");
        }else if (month == 7 || month == 8 || month == 9){
            System.out.println("秋天去偷柿子");
        }else if (month == 10 || month == 11 || month == 12){
            System.out.println("冬天玩雪~");
        }else {
            System.out.println("sb");
        }
    }

键盘录入学生成绩,判断学生的等级
90-100 优秀

80-90 好

70-80 良

60-70 及格

60以下 不及格

public static void main(String[] args) {
//        键盘录入学生成绩,判断学生的等级
//        90-100 优秀
//        80-90 好
//        70-80 良
//        60-70 及格
//        60以下 希望之星

        // 获取学生的成绩
        Scanner scanner = new Scanner(System.in);
        int score = scanner.nextInt();
        // 显示学生的等级
        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 < 60 && score >=0){
            System.out.println("学生成绩是不及格");
        }else {
            System.out.println("您输入的成绩不合法,请检查!");
        }
    }

2.3.2 switch语句

格式:

switch(表达式){
    case 目标值1:
         语句体1;
         break;
    case 目标值2:
         语句体2;
         break;
    ...
    default: 
         语句体n;
         break;
}
  • 格式解释
    • switch表示这个是一个switch语句
    • 表达式的类型可以是byte,short,int,char
    • JDK5之后可以是枚举
    • JDK7之后可以是字符串
    • case 后面跟的是要和表达式进行比较的值
    • 语句体部分可以是一条或者多条语句
    • break表示中断,结束的意思。可以结束switch语句
    • default语句表示所有情况都不匹配时执行该处的语句体,和if语句中的else相同
  • 执行流程
    • 首先计算出表达式的值
    • 然后和case依次进行比较,一旦有匹配的值,就会执行相应的语句,在执行过程中遇到break就会立即结束switch语句。
    • 如果都不匹配,执行default中的语句。

流程图

image-20231211145652971

练习:根据键盘录入的数值1,2,3..7 输出对应的是周几

public static void main(String[] args) {
        // 调整代码格式 ctrl + alt + L
//        根据键盘录入的数值1,2,3..7 输出对应的是周几
        // 获取用户录入的数值
        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("sb");
                break;
        }
    }

注意事项:

  • default的break如果在switch语句的最后,可以省略,但是不建议省略。
  • switch中的case语句顺序不影响最终结果
  • case具有穿透效果,如果没有break的影响,那么代码会一直向下执行。

课堂练习: 根据用户输入的月份,输出对应的季节。使用switch语句实现。

public static void main(String[] args) {
//        根据用户输入的月份,输出对应的季节。
        // 获取用户输入的月份
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        switch (month){
            case 1:
            case 2:
            case 3:
                System.out.println("春天花会开~");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("夏天吃西瓜");
                break;
            case 7:
            case 8:
            case 9:
                System.out.println("秋天吃苹果~");
                break;
            case 10:
            case 11:
            case 12:
                System.out.println("冬天烤红薯");
                break;
            default:
                System.out.println("输入有误!");
                break;
        }
    }

2.4 循环结构

2.4.1 概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码。

2.4.2 循环语句的组成

  • 循环变量初始化(初始化表达式 笔墨伺候 只需要执行一次)
  • 循环出口(布尔表达式)
    • 这是一个boolean表达式,这个表达式能决定是否执行循环体
  • 循环体
    • 就是需要多次循环执行的代码
  • 步进表达式
    • 这个部分是在一次循环结束后,下一次循环判断条件执行前执行,用来计算循环的次数

2.4.3 for循环结构

格式:

for (初始化表达式1;布尔表达式2;步进表达式4){
    循环体3;
}
  • 执行流程
    • 1 2 3 4 2 3 4 2 3 4 .... 2
    • 先执行初始化表达式,只会执行一次,然后执行布尔表达式,如果布尔表达式的结果是true,那么会执行循环体,循环体执行完毕后执行步进表达式,然后继续执行布尔表达式,如果是true继续循环。如果是false,结束循环。

练习:

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

        // 输出5-1
        for (int i = 5;i >= 1;i--){
            System.out.println(i);
        }
  • 求1-100之间的偶数和
//        求1-100之间的偶数和
        // 表示偶数和
        int sum = 0;
        for (int i = 1;i <= 100;i++){
            // 判断i是否是偶数
            if (i % 2 == 0){
                // 偶数
                sum += i;
            }
        }
        System.out.println("1-100的偶数和是" + sum);
    }
        int sum = 0;
        for (int i = 2;i <= 100;i += 2){
            sum += i;
        }
        System.out.println("1-100的偶数和是" + sum);
  • 统计"水仙花数"一共有多少个
    • "水仙花数"就是一个三位数,其中个位的立方 + 十位的立方 + 百位的立方 正好等于其本身。
// 统计水仙花数有多少个
        int count = 0;
        for (int i = 100;i < 1000;i++){
            // 获取个位
            int ge = i % 10;
            // 获取十位
            int shi = i / 10 % 10;
            // 获取百位
            int bai = i / 10 / 10 % 10;
            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

练习:

  • 输出100次HelloWorld
// 输出100次HelloWorld
        int i = 1;
        while (i <= 100){
            System.out.println("HelloWorld" + i);
            i++;
        }
  • 求出1-100的和
// 求出1-100的和
        int i = 1;
        // 1-100的和
        int sum = 0;
        while (i <= 100){
            sum += i;
            i++;
        }
        System.out.println("1-100的和是" + sum);
  • 输出水仙花数有多少个
        int i = 100;
        int count = 0;
        while (i < 1000){
            // 获取个位
            int ge = i % 10;
            // 获取十位
            int shi = i / 10 % 10;
            // 获取百位
            int bai = i / 10 /10 % 10;
            if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i){
                count++;
            }
            i++;
        }
        System.out.println("水仙花数总共有" + count + "个");

2.4.5 循环结构doWhile

格式:

基本格式:
do{
  循环体语句;
}while(布尔表达式);

扩展格式:
初始化表达式1;
do{
  循环体语句3;
  步进表达式4;
}while(布尔表达式2);

执行顺序:1 3 4 2 3 4 2 3 4...2不满足为止

练习:

  • 输出100次HelloWorld
        // 输出100次HelloWorld
        int i = 1;
        do{
            System.out.println("HelloWorld");
            i++;
        }while (i <= 100);
  • 求出1-100之和

自己练习

  • 统计水仙花数有多少个
int i = 100;
        int count = 0;
        do {
            // 个位
            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++;
        }while (i < 1000);
        System.out.println("水仙花数有" + count + "个");

2.4.6 三种循环的区别

  • dowhile循环的循环体至少会执行一次,for循环和while循环只有在条件成立时才会去执行循环体
  • for循环和while循环的小区别:
    • 大部分情况下,for循环和while循环可以互相转换
    • 控制条件语句的那个变量在for循环结束后就不能再使用了,while循环的那个变量还可以使用

使用推荐:for --> while -->dowhile

2.4.7 死循环

死循环就是一直执行的循环,循环的条件一直是true。

又称之为永真循环,无限循环。

while(true){} 推荐

for (;true;){}

for (;

标签:语句,控制,int,流程,System,println,表达式,out
From: https://www.cnblogs.com/460759461-zeze/p/18193964

相关文章

  • ECU刷写流程之压缩刷写技术解析
    背景  在现代汽车电子技术中,ECU(电子控制单元)的软件升级是一项关键任务。为了提高数据传输的效率和安全性,压缩刷写技术应运而生。通过数据压缩传输,我们可以有效地增加带宽利用率,减少刷写工具与ECU之间的数据传输量,从而显著缩短ECU升级时间。此外,为了加强数据的安全性和保密性,......
  • Shell编程之循环语句与函数
    目录1.循环语句(1)for循环语句(2)while循环语句(3)untli循环语句(4)双层循环2.Shell函数(1)函数返回值:(2)函数传参:(3)函数变量的作用范围:(4)递归3.Shell数组(1)定义数组(2)查看数组(3)数组分片、字符替换和删除(4)追加(5)数组排序算法:1.循环语句(1)for循环语句for变量in取值列表for((变量=初始值;变量......
  • Cisco Identity Services Engine (ISE) 3.3 Patch 2 - 基于身份的网络访问控制和策略
    CiscoIdentityServicesEngine(ISE)3.3Patch2-基于身份的网络访问控制和策略实施系统思科身份服务引擎(ISE)-下一代NAC解决方案请访问原文链接:CiscoIdentityServicesEngine(ISE)3.3Patch2-基于身份的网络访问控制和策略实施系统,查看最新版。原创作品,转载......
  • openGauss 通过INSERT语句直接写入数据
    通过INSERT语句直接写入数据用户可以通过以下方式执行INSERT语句直接向openGauss数据库写入数据:使用openGauss数据库提供的客户端工具向openGauss数据库写入数据。请参见向表中插入数据。通过JDBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据。详细内容请参见......
  • mBlock & Arduino(9)舵机(Servo motor)控制
    舵机(Servomotor)英文常简称Servo,中文也有人称伺服机,由控制电路、齿轮、直流马达等组成,可使用〈mBlock&Arduino(4)利用PWM模拟类比讯号〉中谈过的PWM技术来控制舵机转动角度,像Plotclock就应用了三个舵机,以手臂在白板上绘制出目前的时间。舵机控制原理舵机的基本原理是接受......
  • Python执行PostgreSQL数据库查询语句,并打印查询结果
    哈喽,大家好,我是木头左!准备工作:安装必要库和设置数据库连接在开始使用Python执行PostgreSQL数据库查询之前,需要确保已经安装了psycopg2这个库,它是Python语言中用来操作PostgreSQL数据库的一个适配器。可以通过以下命令进行安装:pipinstallpsycopg2-binary安装完成后,需要创......
  • Linux启动流程
    参考链接:https://www.ruanyifeng.com/blog/2013/02/booting.htmlhttps://www.ruanyifeng.com/blog/2013/08/linux_boot_process.htmlhttps://www.runoob.com/linux/linux-system-boot.html第一阶段:计算机启动(硬件启动流程)1.BIOS(BasicInputOutputSystem基本输入输出系统)阶......
  • 开源可视化表单服务商:提升自主研发 助力流程化办公!
    当前,做好流程化办公可以为企业实现提质增效的办公效果,助力企业进入数字化转型。作为开源可视化表单服务商,流辰信息坚持研发创新理念,努力提升自主研发能力,专为广大客户朋友提供集产品、框架定制、产品交付为一体的一站式服务方案。想要实现流程化办公,欢迎随时来了解低代码技术平台......
  • shell条件语句
    一、测试文件测试testtest的语法test条件表达式[条件表达式]test选项文件-d:判断是否是目录(Directory)-f:判断是否是普通文件(File)-b:判断是否是块设备(block)-c:判断是否是字符设备-e:判断是否存在(Exist)-a:判断是否存在-r:判断是否有读的权限(Read)-w:判断......
  • psql 经常用语句
    webcss报错,没有登陆验证等问题deleteFROM"ir_attachment"wheremimetypelike'%/css%';deleteFROM"ir_attachment"wheremimetypelike'%/javascript%';Thereare4othersessionsusingthedatabase解决方式selectpg_terminate_......