【JAVASE】顺序和选择结构

news2025/1/12 22:56:21

⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:浅谈Java
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖

顺序和选择

  • 1. 顺序结构
  • 2. 分支结构
    • 2.1 if 语句
    • 2.2 switch 语句

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("吃个大鸡腿!!!");
        }
    }  

🍤 运行结果:

在这里插入图片描述

语法格式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("挨大嘴巴子!!!");
     }
}

🍤 运行结果:

在这里插入图片描述

语法格式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("错误数据");
        }
}

🍤 运行结果:

在这里插入图片描述

实例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 是奇数");
        }
}

🍤 运行结果:
在这里插入图片描述

实例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");
        }
}

🍤 运行结果:

在这里插入图片描述

实例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("不是闰年");
            }
        }
}

🍤 运行结果:

在这里插入图片描述
注:

  • 分号问题
    这段代码的结果会是什么?
public static void main(String[] args) {
        int x = 20;
        if (x == 10);
        {
            System.out.println("hehe");
        }
}

🍤 运行结果:

在这里插入图片描述

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

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

在这里插入图片描述
🍩分号代表语句的结束

  • 悬垂 else 问题
 public static void main(String[] args) {
        int x = 10;
        int y = 10;
        if (x == 20)
            if (y == 10)
                System.out.println("aaa");
        else
            System.out.println("bbb");
}

🍤 运行结果:

在这里插入图片描述

为什么什么都没有打印?

首先if / else 语句中可以不加大括号,当不加{}时,他只控制下面的一条语句,要控制多行,必须加上大括号。
其次就是 else 是和最接近的 if 匹配,并不是和谁对齐就与它匹配。

2.2 switch 语句

基本语法:

switch(表达式){
	case 常量值1:{
		语句1;
		[break;]
	}
	case 常量值2:{
		语句2;
		[break;]
	}
	...
	default:{
		...;//内容都不满足时执行语句
		[break;]
	}
}

执行流程:

  1. 先计算表达式的值
  2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
  3. 当表达式的值没有与所列项匹配时,执行default

实例:根据 day 的值输出星期

public static void main(String[] args) {
        int day = 6;
        switch(day) {
            case 1:
                System.out.println("星期一");
                break;//遇到break停止,跳出switch语句
            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:
            case 7:
                System.out.println("周末");
                break;
            default:
                System.out.println("输入有误");
                break;
        }
}

🍤 运行结果:

在这里插入图片描述

注:

  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
    基本类型:byte、char、short、int,不能是long、float、double、boolean类型;
    引用类型:String常量串、枚举类型
  • break 不要遗漏,否则会失去 “多分支选择” 的效果
  • switch 不能表达复杂的条件
  • switch 虽然支持嵌套,但是很丑,一般不推荐,毕竟这是一个看脸的世界~

使用错误类型

public static void main(String[] args) {
        double num=1.0;
        switch(num) {
            case 1.0:
                System.out.println("hehe");
                break;
            case 2.0:
                System.out.println("haha");
                break;
        }
}

🍤 编译出错:

在这里插入图片描述

遗漏break

public static void main(String[] args) {
        int day = 1;
        switch(day) {
            case 1:
                System.out.println("星期一");
                // break;
            case 2:
                System.out.println("星期二");
                break;
        }
}

🍤 运行结果:

在这里插入图片描述

不能表达复杂条件

// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 无法表示
if (num > 10 && num < 20) {
	System.out.println("hehe");
}

在这里插入图片描述

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

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

相关文章

MySQL的入门使用

在命令提示符内使用MySQL MySQL安装好后&#xff0c;就可以简单的尝试使用它。 打开&#xff1a;命令提示符程序&#xff0c;输入&#xff1a;mysql -uroot -p&#xff0c;然后回车后输入密码&#xff0c;即可进入命令行环境 在MySQL的命令行环境下&#xff0c;可以通过&…

【换根DP】Subtree

Subtree - 洛谷 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing namespace std;const int mxn1e510; const int mxv1e510;vector<int> G[mxn]; int N,P,u,v; int f[mxn],g[mxn],son[mxn],pre[mxn],suf[m…

Acwing.901 滑雪(动态规划)

题目 给定一个R行C列的矩阵&#xff0c;表示一个矩形网格滑雪场。 矩阵中第i行第j列的点表示滑雪场的第i行第j列区域的高度。 一个人从滑雪场中的某个区域内出发&#xff0c;每次可以向上下左右任意一个方向滑动一个单位距离。当然&#xff0c;一个人能够滑动到某相邻区域的前…

CTF PWN-攻防世界Overflow整数溢出漏洞

文章目录 前言整数溢出有符号整数溢出无符号整数回绕截断与宽度溢出 int_overflow题目漏洞分析EXP程序构造 总结 前言 滴水穿石&#xff0c;非一日之功。继续练习攻防世界 PWN 题目&#xff0c;此次练习的题目是 int_overflow&#xff0c;顾名思义是整数溢出类型的漏洞&#x…

小波分解机械信号

function [ output_args ] ex4_2( input_args ) %EXAMPLE4_2 Summary of this function goes here % Detailed explanation goes here clc; clear; load sumsin; s sumsin; % 进行3层小波分解&#xff0c;小波基函数为db3 [c,l] wavedec(s,3,db3); figure(1) subplot(21…

flutter minio

背景 前端 经常需要上传文件 图片 视频等等 到后端服务器&#xff0c; 如果到自己服务器 一般会有安全隐患。也不方便管理这些文件。如果要想使用一些骚操作 比如 按照前端请求生成不同分辨率的图片&#xff0c;那就有点不太方便了。 这里介绍以下 minio&#xff0c;&#xff0…

Vue如何实现页面跳转路由,实现单页面跳转

1、#锚链接&#xff0c;#后面的就是锚链接 2、#之后都是hash地址&#xff0c;这些都是在浏览器的F12中获得的 3、在浏览器查询链接地址的方法&#xff0c;href代表着当前的浏览器地址&#xff0c;&#xff1a; 使用location.href: 4、只想获取#链接地址&#xff0c;后面加loc…

Linux设备模型之input子系统详解

在键盘驱动代码分析的笔记中&#xff0c;接触到了input子系统.键盘驱动&#xff0c;键盘驱动将检测到的所有按键都上报给了input子系统。Input子系统是所有I/O设备驱动的中间层&#xff0c;为上层提供了一个统一的界面。例如&#xff0c;在终端系统中&#xff0c;我们不需要去管…

Redis(五)—— Redis进阶部分

一、Redis配置文件详解 注意这是Redis服务本身的配置文件&#xff0c;相当于maven的settings.xml&#xff0c;而不是我们在springboot去配置Redis的那个application.yml。 核心部分include 引入其他redis配置文件&#xff0c;相当于spring的<import>bind 设置IP&#xf…

【Java|golang】2500. 删除每行中的最大值

给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其中任何一个。 将删除元素中的最大值与答案相加。 注意 每执行一次操作&#…

【Vue3】递归组件

1. 递归组件mock数据 App.vue <template><div><Tree :data"data"></Tree></div> </template><script setup lang"ts"> import { reactive } from vue; import Tree from ./components/Tree.vue; interface Tr…

【数学】差分数组(一维差分)

一.简介 差分数组是指对一个一维数组进行差分操作得到的新数组。差分操作是指计算原数组中相邻元素之间的差异&#xff0c;并将这些差异作为新数组的元素。 具体而言&#xff0c;对于一个长度为n的一维数组x&#xff0c;其差分数组diff的第i个元素可以通过以下公式计算得到&am…

【Rust笔记】意译解构 Object Safety for trait

意译解构Object Safety for trait 借助【虚表vtable】对被调用成员函数【运行时内存寻址】的作法允许系统编程语言Rust模仿出OOP高级计算机语言才具备的【专用多态Ad-hoc Polymorphism】特性。 计算机高级语言中的“多态”术语是一个泛指。它通常可被细化为 基于继承关系的“子…

时间复杂度介绍及其计算

时间复杂度 1.算法效率 如何衡量一个算法的好坏呢&#xff1f;看这段代码&#xff1a; long long Fib(int N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); }这是斐波那契数列的递归代码&#xff0c;非常简洁&#xff0c;那么这就一定说明它好吗&#xff1f;答案显而易…

智能家居是否可与ChatGPT深度融合?

​ ChatGPT自2022年面世以来&#xff0c;已为亿万网民提供智能问答服务。然而我们是否曾想到&#xff0c;这一人工智能驱动的聊天机器人&#xff0c;是否可为智能家居赋能? 要实现ChatGPT与智能家居设备之间的无缝对话&#xff0c;单单依靠一台终端是远远不够的。ChatGPT必须…

Java基础_多线程

Java基础_多线程 什么是多线程并发, 并行多线程的实现方式继承Thread类实现Runnable接口实现Callable接口和Future接口实现方式对比 常见的成员方法常见方法进程的优先级守护线程礼让线程插入线程 线程安全线程的生命周期售票模拟同步代码块同步方法lock锁 死锁 生产者和消费者…

【C语言】通讯录1.0 (静态版)

前言 通讯录是一种记录联系人信息的工具&#xff0c;包括姓名、电话号码、电子邮件地址、住址等。 此通讯录是基于自定义类型的基础上进行制作&#xff0c;通讯录&#xff08;静态版&#xff09;&#xff0c;后期会进行通讯录的更新 ****** 有需要源代码&#xff0c;见文章末尾…

大于号在python中怎么打,python大于等于怎么写

大家好&#xff0c;小编为大家解答python中大于并小于一个数代码的问题。很多人还不知道python中大于等于且小于等于&#xff0c;现在让我们一起来看看吧&#xff01; 1、python 中不等于怎么表示 #!/usr/bin/python a1 b2 if ab: print "a 等于 b" if a!b: print &…

ArcGIS Pro 制作一张立体地形图

在各位关掉文章之前,先把成果贴上来 下面开始操作步骤贴图,这个真的很简单,没有什么复杂的软件联动和操作 这是哥斯达黎加部分区域的30mDEM,数据链接我放在最后。 首先,找到工具【栅格函数】—【统计分析】,选择下载好的栅格,领域设置行列数都改为6,点击创建新图层。然…

从官网认识 JDK,JRE,JVM 三者的关系

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM 是一些大厂面试必问点&#xff0c;要想解决 OOM、性能调优方面的问题&#xff0c;掌握 JVM 知识必不可少&#xff0c;从今天开始&#xff0c;将为大家介绍 JVM 的常用知…