Java基础篇_1.4——程序流程控制之选择结构if语句

news2024/10/6 6:45:06

程序流程控制

关于程序控制的关键字:

程序控制关键字
breakdowhilefor
continueswitchcasedefault
returninstanceofifelse

程序运行时的一个顺序,程序的结构分为:顺序结构、选择结构和循环结构。

  • 顺序结构是指按照代码的书写顺序执行。
  • 选择结构是指根据条件来选择执行对应代码。
  • 循环结构是指在一定的条件下重复执行某段代码。

1.continue、break、和return的区别是什么?

在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要 在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:

  1. continue :指跳出当前的这一次循环,继续下一次循环。
  2. break :指跳出整个循环体,继续执行循环下面的语句。

return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法:

  1. return; :直接使用 return 结束方法执行,用于没有返回值函数的方法
  2. return value; :return 一个特定值,用于有返回值函数的方法

2.选择结构

java 中选择结构有两种,分别是 if 和 switch

2.1 if

if 控制语句有三种不同形式,单分支、双分支、多分支结构

switch语句流程图_switch函数语句i_在word中如何画流程图_中国排行网

 

 

2.2 单分支

结构如下:

if (表达式){
    //代码块
}
if是关键字
表达式的结果必须是boolean类型,值是true或false
如果满足条件执行`{}`里的代码块,如果只有一句代码,可以省略`{}`但不推荐。

2.3 双分支

结构如下:

if(表达式){
       //代码块1
}else{
       //代码块2
}
如果表达式结果是true,执行代码块1
如果表达式结果是false,执行代码块2

2.4 多分支

结构如下:

if(表达式1){
    //代码块1
}else if(表达式2){
    //代码块2
}else{
    //代码块3
}

2.5 嵌套if

结构如下:

if(表达式1){
    if(表达式2){
        //代码块1
    }else{
        //代码块2
    }
}else{
     //代码块3
}
如果表达式1返回false,执行`else`中的代码块3
如果表达式1返回true,判断表达式2返回结果,如果表达式2返回true执行代码块1,返回false执行代码块2

2.6 switch

  • switch 语句(开关语句),用于实现多分支选择结构。
  • 结构如下:
switch(表达式){
    case 常量1:
        //语句1
        break;
    case 常量2:
        //语句2
    break;
        .....
    default:
        //语句3
        break;
}

switch中有switch、case、break、default等关键字

  • case用于从上到下依次与表达式进行匹配
  • break用终止switch执行
  • default用于当前switch中所有的case都没有匹配上表达式时执行。default语句可写可不写。
  • switch后的表达式支持 int 、 byte 、 short 、 char 、 Enum(枚举) 类型,在 jdk1.7(jdk7.0) 之后又增加了对 String 类型的支持
  • switch 支持多值匹配

注意:switch语句一定不要忘了写 break;

2.7 switch 新特性

  1. 箭头表达式 从Java12开始,switch语句的语法更简洁,保证只有一种路径会被执行,并且不需要break语句。

case语句简写成:case 常量 -> {表达式;} 如果表达式只有一句,{}可以省略

  1. case 可以匹配多个值:把相同case放一起,最后一个case写逻辑即可,使用逗号来分开多个值。

例如:

 /*
     * 编写一个程序,根据用户输入的月份(1 到 12),输出该月份所属的季节。
     * 假设春季是 3到 5 月,夏季是 6 到 8 月,秋季是 9 到 11 月,冬季是 12、1 和 2月。
     * 如果输入的月份超出了范围,输出"输入错误"。
     * */
    public void demo2() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份:");
        int mouth = scanner.nextInt();
        switch (mouth) {
            case 3, 4, 5 -> System.out.println(mouth + "月份是春季");
            case 6, 7, 8 -> System.out.println(mouth + "月份是夏季");
            case 9, 10, 11 -> System.out.println(mouth + "月份是秋季");
            case 12, 1, 2 -> System.out.println(mouth + "月份是冬季");
            default -> System.out.println("输入错误!");
        }
    }
  1. yield:就是如果需要复杂的语句,也是可以写多个语句,放到{……}里面,然后使用yield返回一个值作为switch语句的返回值。

3. 案例1——计算机程序

 /* 编写一个简单的计算器程序,要求用户输入两个数和操作符(+、-、*、/),然后根据操
     * 作符进行相应的运算,并输出结果。如果输入的运算符不是有效的运算符,则输出"无效的运算符"。
     * */
    public void demo1() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1 = scanner.nextInt();

        System.out.println("请输入操作符:");
        String m = scanner.next();

        System.out.println("请输入第二个数:");
        int num2 = scanner.nextInt();

        int result = switch (m) {
            case "+" -> {
                int res = num1 + num2;
                yield res;
            }
            case "-" -> {
                int res = num1 - num2;
                yield res;
            }
            case "*" -> {
                int res = num1 * num2;
                yield res;
            }
            case "/" -> {
                int res = num1 / num2;
                yield res;
            }
            default -> 0;
        };
        System.out.printf("%d" + m + "%d=%d", num1, num2, result);
    }

注意:上述代码switch中的default要有,以及switch语句结束之后的分号

4. 案例2——根据员工的工龄来计算年终奖金

//    编写一个程序,根据员工的工龄来计算年终奖金。奖金计算规则如下:
//    工龄小于等于5年,奖金为工资的5%
//    工龄大于5年且小于等于10年,奖金为工资的10%
//    工龄大于10年,奖金为工资的15%
//            (工资和工龄输入)
    public void demo4() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入员工的工龄:");
        int age = scanner.nextInt();
        System.out.println("请输入员工的工资:");
        int money = scanner.nextInt();
        // 初始年终奖
        int bouns = 100 ;
        if (age <= 5) {
            bouns += (int) (money * 0.05);
        } else if (age <= 10) {
            bouns += money * 0.1;
        }else {
            bouns += money * 0.15;
        }
        System.out.printf("工龄位%d的奖金为%d",age,bouns);
    }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何手动创建EFI引导分区?

EFI系统分区是数据存储设备上的分区&#xff0c;供遵循统一可扩展固件接口的计算机使用。当计算机启动时&#xff0c;UEFI固件加载存储在可扩展系统分区上的文件&#xff0c;以启动安装的操作系统和各种实用程序。在GPT磁盘上启动Windows时&#xff0c;必须有EFI系统分区。如果…

ClickHouse(九):Clickhouse表引擎 - Log系列表引擎

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,Kerberos安全认证,大数据OLAP体系技术栈-CSDN博客 &…

SpringBoot引入MyBatisGenerator

1.引入插件 <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration><!--generator配置文件所在位置--><configuratio…

【echartsjs】js实现图表数据 跟动态数据联合展示 三个案例,附带源码

序幕&#xff1a; 所展示示例使用到多个js库&#xff0c;例如&#xff1a;jquery、echarts、liMarquee等等&#xff0c;我是下载到了本地&#xff0c;其他小伙伴记得自己下载相关js库&#xff0c;或者引用线上库 推荐一个获取线上资源网站&#xff1a;BootCDN - Bootstrap 中文…

fastadmin 权限管理栏目关闭了怎么恢复

目前能解决的方法就是直接url敲出来菜单配置&#xff1a;Internet Speed Test | Fast.com 然后再把这个隐藏显示出来

抄写Linux源码(Day7:读闪客文章第二回 “自己给自己挪个地儿”)

闪客文章地址&#xff1a;https://mp.weixin.qq.com/s?__bizMzk0MjE3NDE0Ng&mid2247499274&idx1&sn23885b5b1344a1425f5a971d06ad2e7d&chksmc2c584a7f5b20db1b0a75ea896e7218a9f8bcd006e68f53693bab240b13f9e2fb0ec0c9b9a6a&cur_album_id2123743679373688…

jmeter中json提取器,获取多个值,并通过beanshell组成数组

jmeter中json提取器介绍 特别说明&#xff1a;**Compute concatenation var(suffix_ALL)&#x1f617;*如果找到许多结果&#xff0c;则插件将使用’ &#xff0c; 分隔符将它们连接起来&#xff0c;并将其存储在名为 _ALL的var中 json提取器调试 在查看结果树中选择JSON Pat…

python——案例9:判断字符串的长度

案例8&#xff1a;设定列表&#xff1a;listl[0,1,2,3,4,5],求列表之和total0 list1[0,1,2,3,4,5] #列表lis1for ele in range(0,len(list1)):totaltotallist1[ele] print("列表中元素之和&#xff1a;",total) #输出结果

既要增长又要人效,零售人准备好接受老板的灵魂拷问了吗

增长对于零售行业尤其中小规模的玩家来说重要性不言而喻&#xff0c;而支撑持续增长的引擎之一就是对日常运营数据能随时进行快速、合理的解读&#xff0c;从而在瞬息万变的市场环境和有限的时间窗口内&#xff0c;根据指标背后折射的问题及时调整市场投放和客户关系维护等策略…

MySQL 极速安装使用与卸载

目录 mysql-5.6.51 极速安装使用与卸载 sqlyog工具 mysql简化 mysql-8.1.0下载配置 再完善 mysql-5.6.51 极速安装使用与卸载 mysql-8.1.0下载安装在后 mysql中国官网 MySQLhttps://www.mysql.com/cn/ 点击MySQL社区服务器 点击历史档案 下载完 解压 用管理员运行cmd&a…

原来这就是数组

原来这就是数组 数组的基本概念为什么使用数组数组的概念数组的特点数组如何初始化1.动态初始化2.静态初始化 数组的使用访问数组元素代码演示 遍历数组的几种方式1.直接打印&#xff08;不可取&#xff09;2.for循环打印&#xff08;如果有判断条件推荐&#xff09;3.转化为St…

stm32常见数据类型

stm32的数据类型的字节长度 s8 占用1个byte&#xff0c;数据范围 -2^7 到 (2^7-1) s16 占用2个byte&#xff0c;数据范围 -2^15 到 (2^15-1) s32 占用 4个byte&#xff0c;数据范围 -2^31 到 (231-1)231 2147483647 int64_t占用8个byte&#xff0c;数据范围 -2^63 到 (2^63-1)…

flutter:占位视图(骨架屏、shimmer)

前言 有时候打开美团&#xff0c;在刚加载数据时会显示一个占位视图&#xff0c;如下&#xff1a; 那么这个是如何实现的呢&#xff1f;我们可以使用shimmer来开发该功能 实现 官方文档 https://pub-web.flutter-io.cn/packages/shimmer 安装 flutter pub add shimmer示例…

渲染中回流与重绘讲解

浏览器的渲染过程 本文先从浏览器的渲染过程来讲解回流与重绘。 从上面这个图上&#xff0c;我们可以看到&#xff0c;浏览器渲染过程如下&#xff1a; 解析HTML&#xff0c;生成DOM树(DOM Tree)&#xff0c;解析CSS&#xff0c;生成CSS树(Style Rules)将DOM树和CSS树结合&am…

通过启动盘安装 SylixOS

通过启动盘安装 SylixOS 制作启动盘 将 U 盘插入电脑。 打开 RealEvo-IDE&#xff0c;并在菜单栏选择 Tools > RealEvo-SylixOS-Installer 启动安装工具。 设置启动盘各项参数&#xff0c;如下图红框所示。 单击一键安装 SylixOS。程序运行过程信息输出显示如下图所示。…

c语言~野指针

1、野指针&#xff0c;既没有初始化的指针&#xff0c;//如果没有给指针初始化&#xff0c;则指针p的内容为随机地址&#xff0c;会随机指向&#xff0c;故成为野指针&#xff0c;不可以操作野指针 #include "stdio.h" #include <stdlib.h>int main() {//1、野…

Nginx之正、反向代理

什么是代理 A同学在Ai大时代背景下开启他的创业之路&#xff0c;目前他遇到的最大的一个问题就是启动资金&#xff0c;于是他决定去找马云爸爸借钱&#xff0c;可想而知&#xff0c;最后碰一鼻子灰回来了&#xff0c;情急之下&#xff0c;他想到一个办法&#xff0c;找关系开后…

Ubuntu20.04之VNC的安装与使用

本教程适用于Ubuntu20.04及以下版本&#xff0c;Ubuntu22.04版本或有出入 更多更新的文章详见我的个人博客&#xff1a;【前往】 文章目录 1.安装图形桌面1.1选择安装gnome桌面1.2选择安装xface桌面 2.安装VNC-Server3.配置VCN-Server4.连接VNC5.设置VNC-Server为系统服务&…

STM32 DMA

DMA介绍 DMA&#xff0c;Direct Memory Access&#xff0c;即直接存储器访问。 DMA传输&#xff0c;将数据从一个地址空间复制到另一个地址空间。&#xff08;内存&#xff08;程序里定义的数组&#xff09;->外设&#xff08;串口、SPI等外设的数据寄存器&#xff09;、外…

web集群学习--静态网页和动态网页的区别、WEB1.0和WEB2.0的区别、Tomcat安装以及部署jpress应用

1.静态网页和动态网页的区别 1.1概念 静态网页&#xff1a; 由在服务器上提前创建好的HTML文件组成&#xff0c;它的内容在用户请求页面时不会发生改变。当用户访问一个静态网页时&#xff0c;服务器会直接将预先准备好的HTML文件发送给用户的浏览器进行显示。因为静态网页的…