【JAVASE】顺序和选择结构 上

简介: 【JAVASE】顺序和选择结构

1. 顺序结构


顺序结构比较简单,就是按照代码书写的顺序一行一行执行。


例如:

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");

这段代码的运行结果就是从上至下输出:


aaa
bbb
ccc

如果调整代码的书写顺序, 则执行顺序也发生变化:


System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb")

🍤 输出:


aaa
ccc
bbb


2. 分支结构


2.1 if 语句

语法格式1:

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

如果布尔表达式结果为 true,执行 if 中的语句,否则不执行。


比如:小明,如果这次考试考到90分或以上,给你奖励一个鸡腿。


    public static void main(String[] args) {
        int score = 92;
        if(score >= 90){
            System.out.println("吃个大鸡腿!!!");
        }
    }  

🍤 运行结果:


710376a3ee59a39f4c4b622c45516ec5_60aff82f52ce404ebba7a9fdb874c038.png


语法格式2:

if(布尔表达式){
  // 语句1
}else{
  // 语句2
}

如果布尔表达式结果为 true,则执行 if 中语句,否则执行 else 中语句。


比如:小明,如果这次考到90分以上,给你奖励一个大鸡腿,否则奖你一个大嘴巴子。


public static void main(String[] args) {
    int score = 89;
    if(score >= 90){
        System.out.println("吃个大鸡腿!!!");
    }else{
        System.out.println("挨大嘴巴子!!!");
     }
}

🍤 运行结果:


ca68b1de4658441c487176159983f476_ffd5f2d1e97442ce8c098c17bff0f929.png


语法格式3:


if(布尔表达式1){
  // 语句1
}else if(布尔表达式2){
  // 语句2
}else{
  // 语句3
}

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。


比如:我们定义一个分数区间来划分学生的成绩


分数在 [90, 100] 之间的,为优秀

分数在 [80, 90) 之前的,为良好

分数在 [70, 80) 之间的,为中等

分数在 [60, 70) 之间的,为及格

分数在 [ 0, 60) 之间的,为不及格

错误数据


代码实现:


 public static void main(String[] args) {
        int score=88;//学生成绩
        //判断
        if(score >= 90){
            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("错误数据");
        }
}

🍤 运行结果:


6506ee6abd79d1b991fed9a1ad0db233_0606070ecffb4a1ca48ef6c4dc96af76.png


实例1:判断一个数字是奇数还是偶数


首先需要知道判断奇偶的规则。数学上,我们判断奇偶数是以该数是否可以整除 2 为根据的,一个数能够整除 2,即计算的余数为 0,当除以 2 后的余数为 0 时,就说明了该数为偶数,否则是奇数。


我们已经了解判断奇偶数的方法,尝试写出代码:


public static void main(String[] args) {
        int num = 10;
        if (num % 2 == 0) {
            System.out.println("num 是偶数");
        } else {
            System.out.println("num 是奇数");
        }
}

🍤 运行结果:

71735c8e9b5f14dab9d04d0c4390c969_13ae1d257bda483195b23f0e4356de10.png


实例2:判断一个数字是正数,负数,还是零


大于 0 是正数,小于 0 是负数,所以这里只需要判断是大于、小于还是等于。


 public static void main(String[] args) {
        int num = 10;
        if (num > 0) {
            System.out.println("正数");
        } else if (num < 0) {
            System.out.println("负数");
        } else {
            System.out.println("0");
        }
}

🍤 运行结果:


257e1d9de254aea7f0550e783604f85a_1eb7d81f159b427d9408420b9386e48f.png


实例3:判断一个年份是否为闰年


普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。


public static void main(String[] args) {
        int year = 2000;
        if (year % 100 == 0) {
        // 判定世纪闰年
            if (year % 400 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
        } else {
        // 普通闰年
            if (year % 4 == 0) {
                System.out.println("是闰年");
            } else {
                System.out.println("不是闰年");
            }
        }
}

🍤 运行结果:

c2c09985f8841bcbdf8eeab84f74fd4d_81c54ac9b9da42a0a04f06cae6814897.png


注:


  • 分号问题

这段代码的结果会是什么?

public static void main(String[] args) {
        int x = 20;
        if (x == 10);
        {
            System.out.println("hehe");
        }
}

🍤 运行结果:

b64825cf125fb33bc97eebb5f6caf237_2bfd741b29234aabb0d329dacb94e68e.png

有人可能会好奇,为什么这里 x 明明是20,不等于10啊,怎么还会打印 hehe 。

仔细观察就会发现:if 语句后跟有一个分号,这里导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,所以会打印出来。

🍩分号代表语句的结束


相关文章
|
网络协议 Java 测试技术
阿里内部Netty实战小册,值得拥有
Netty 是一个高性能的 Java 网络通信框架,简化了网络编程并涵盖了最新的Web技术。它提供了一种抽象,降低了底层复杂性,使得更多开发者能接触网络编程。Netty 因其易用性、高效性和广泛的应用场景受到推崇,适合互联网行业从业者学习,有助于理解和开发基于Netty的系统。免费的《Netty实战小册》详细介绍了Netty的各个方面,包括概念、架构、编解码器、网络协议和实际案例,帮助读者深入理解和应用Netty。如需完整版小册,可点击链接获取。
阿里内部Netty实战小册,值得拥有
|
druid Java
Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:
Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:
1106 0
Failed to bind properties under 'spring.datasource' to javax.sql.DataSource:
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
Java中Comparable接口和Comparator接口的区别(如果想知道Java中Comparable接口和Comparator接口的区别,那么只看这一篇就足够了!)
|
Python
NumPy中的二维直方图
【6月更文挑战第12天】NumPy中的二维直方图。
187 1
|
人工智能 自动驾驶 机器人
云栖Day1重磅合集! Qwen2.5-72B成为全球最强开源模型
今天,2024云栖大会正式开幕 通义千问重磅开源Qwen2.5 性能超越Llama 405B 继续稳居最强开源大模型位置
1270 9
|
SQL 关系型数据库 MySQL
ETL工具 Kettle 中怎么通过变量传参
ETL工具 Kettle 中怎么通过变量传参
1199 0
|
SQL 运维 监控
MySQL死锁系列-线上死锁问题排查思路
本篇文章会讲解一下如果线上发生了死锁异常,如何去排查和处理。除了系列前文讲解的有关加锁和锁冲突的原理还,还需要对 MySQl 死锁日志和 binlog 日志进行分析。
MySQL死锁系列-线上死锁问题排查思路
|
5G 网络架构
5G 系统网络架构 | 带你读《5G 无线系统设计与国际标准》之四
为了适应各种部署场景,5G 支持了两种部署方式:一种为分布式部署,这种方式与 LTE系统类似,网络由基站组成,基站支持全协议栈的功能;另一种为集中式部署,基站进一步分为集中单元(CU,Centralized Unit)和分布单元(DU,Distributed Unit)两个节点,CU 和 DU 分别支持不同的协议栈和功能,
5G 系统网络架构  | 带你读《5G 无线系统设计与国际标准》之四
QT桌面项目(状态栏和导航栏设置)
QT桌面项目(状态栏和导航栏设置)
478 0