一个月学会Java 第5天 控制结构

news2024/12/30 2:10:17

Day5 控制结构

这么叫可能有些就算有基础的人也看不懂,其实就是if-else、switch-case、for、while、do-while这几个,没基础的听到了这个也不要慌张,这几个是程序的基础,多多训练就好

第一章 顺序结构

这章其实没有什么好讲的,其实正常看代码也看得懂的,就是代码的执行按照顺序下来

第二章 条件语句(分支)

if 语句

程序自然是有判断的对吧,所以这个if就是一个判断,如果有C语言基础的可以跳过,因为这块其实和C语言、C++、C#是一样的

if听意思也能看得出来其实就是如果的意思,语法是这样的 if (条件结果是true或者是false){}

既然是分支的话,那说明肯定是有反着的情况的,那就是 else
,接在if语句的结束后面,就是当if语句的条件为false的时候就执行else,语法也和if一样需要花括号,自然也是可以不用花括号的

public class Hello {
    public static void main(String[] args) {
        int i = 50;
        int j = 15;
        if (i == 50)
            System.out.println(i);
        if (j != 15) {
            System.out.println(j);
        } else
            System.out.println("j == 15");
    }
}

请添加图片描述

上面的程序明显可以看出就只是一个判断而已,但是他是可以进行嵌套进行的,还有一点就是这个语句其实是可以不加花括号的,但是代价就是只能执行一行语句,一个语句的结束就是一个分号,所以你也可以单写一个分号就是一个语句,根据顺序结构下来,其实就是所有判断都会进入,只不过是否为true才决定是否执行

在没有花括号的情况下else会对最近的if进行关联(必须是同级的)

switch-case语句

我们先来看一个案例

public class Hello {
    public static void main(String[] args) {
        int score = 5;
        if (score == 1) {
            System.out.println("不及格");
        } else if (score == 2) {
            System.out.println("及格");
        } else if (score == 3) {
            System.out.println("中等");
        } else if (score == 4) {
            System.out.println("良好");
        } else if (score == 5) {
            System.out.println("优秀");
        }
    }
}

请添加图片描述
这样是不是太糅杂了,一般这种情况,我们都会使用switch-case去解决

public class Hello {
    public static void main(String[] args) {
        int score = 5;
        System.out.println("这次使用switch-case");
        switch (score) {
            case 1:
                System.out.println("不及格");
            case 2:
                System.out.println("及格");
            case 3:
                System.out.println("中等");
            case 4:
                System.out.println("良好");
            case 5:
                System.out.println("优秀");
        }
    }
}

请添加图片描述

是不是出来了,然后看的也比if-else疯狂嵌套要舒服,但是其实是错误的,我们来说一下是为什么,因为这里并没有进行执行完就跳出的选择,之所以只打印了一个优秀是因为我的5写在了最下面,还记得我说的顺序结构吗,这里也不例外,假如我们把score改成1会发生什么

请添加图片描述
是不是明显是有bug的,我们再来改变一下代码,我们就能准确判断了,然后是不是还有一个问题,那就是如果我的值都不是在1-5之间我想要直接打印一个,成绩无效呢?也很简单,我们慢慢道来

public class Hello {
    public static void main(String[] args) {
        int score = 1;
        System.out.println("这次使用switch-case");
        switch (score) {
            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;
        }
    }
}

请添加图片描述

这次是不是就没有连携下去了,这个就是break的作用,从英文我们也能看懂是干什么的,就是打断的作用,我们直接打断退出这个switch部分。

我们在去执行一下我们刚刚的想法,是不是说如果我输入的6是不是就不执行了,但是我想要他打印一个成绩无效怎么办,只需要加一个东西,那就是default就行,语法用的其实和case是一样的,只不过他就和if-else的else一样,其他情况才会使用default

public class Hello {
    public static void main(String[] args) {
        int score = 6;
        System.out.println("这次使用switch-case");
        switch (score) {
            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;
            default:
                System.out.println("成绩无效");
                break;
        }
    }
}

请添加图片描述

如果有小伙伴说那我每句都要加break为什么不直接让break作用在每一个上面不就好了吗,人话就是我自带break属性不就好了吗?但是这样的话就不能处理其他事情,比如我有些情况,就那月份判断季节来说,是不是就可以这样实现

public class Hello {
    public static void main(String[] args) {
        int season = 1;
        switch (season) {
            case 3:
            case 4:
            case 5:
                System.out.println("Now is Spring");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("Now is Summer");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("Now is Autumn");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("Now is Winter");
                break;
            default:
                System.out.println("输入的月份有误");
                break;
        }
    }
}

请添加图片描述

在以上代码里面是不是就是有用了,少些了8次同样的语句是吧

第三章 循环语句

循环语句是程序中最重要的步骤之一,很多地方都是需要使用到循环语句的,这块至关重要,但是又有点小麻烦,比起分支结构

循环语句有三个for、while、do-while,还有一个迭代器一样的foreach也就是增强for循环,现在还不学,之后再学习

while循环

我们先来看看while循环,while循环的语句是这样 while(条件){}自然也是可以不用花括号,但是这样的话就会只是循环一个语句,使用循环是会使用前面学过的不少知识,我们来稍稍循环一下

public class Hello {
    public static void main(String[] args) {
        //我们现在的目标就是连续打印十次,你好
        int i = 0;
        while (i < 10) {
            System.out.println("你好");
            i++;
        }
    }
}

请添加图片描述

一般情况下我们都是会这么使用的,先声明一个整型变量初始化为0,这个是有说法,因为以后要学到的一个知识,是数组,他的下标就是从0开始,直接这样使用是比较方便的。

还有一个语句也是循环的标配,就是while循环体内部的i++,因为这个就是自增嘛,之前学过的,除了之前说过的是自增1,其实也可以等价为 i += 1
也可以等价为 i = i + 1,然后就是内部的语句了,比如也可以写一个判断,小于5执行什么,大于5执行什么,等于5执行什么,循环还是比较有意思的

do-while循环

现在我们来讲讲这个do-while循环,首先我们先来看一个案例,之前我们也说过了 while(条件){} 中的这个条件也就是布尔值,如果我上来就不满足的话,那我直接执行不了

public class Hello {
    public static void main(String[] args) {
        int i = 10;
        System.out.println("开始循环");
        while (i < 10) {
            System.out.println("你好");
            i++;
        }
        System.out.println("结束循环");
    }
}

请添加图片描述

这里是不是没有执行,但是do-while不会出现这种情况,因为do-while会先执行一遍然后再判断条件,先说说语法是怎么样的 do{}while(条件);

public class Hello {
    public static void main(String[] args) {
        int i = 10;
        System.out.println("开始循环");
        do {
            System.out.println("你好");
            i++;
        } while (i < 10);
        System.out.println("结束循环");
    }
}

请添加图片描述

这样就能先执行一遍然后再判断条件

for循环

接下来这个可是大头,大部分情况的循环其实使用的都是for循环

for循环的语法是这样的 for(初始化值; 条件; 条件变化){};

public class Hello {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("你好");
        }
    }
}

请添加图片描述

然后for循环的这个括号里的三个该写的东西其实也可以都不写,注意分开的时候是使用分号进行分割的,初始值可以不写,因为可以使用外部的,条件可以不写,因为这样就是死循环除了使用其他方法跳出循环,
条件变化也可以不写,也可以不止写一个++,也可以使用+=2等等,一般 初始化值条件变化 这两个地方使用多个参数也是可以的,只不过需要使用逗号来隔开。

第四章 跳转语句

这个跳转语句可是和循环息息相关的,然后还和switch有点小关系

那么这个跳转语句其实只有两个,一个就是switch-case里面使用过的break,和continue,从名字应该能看懂了,break就是直接打断,在循环里的作用也是直接跳出循环,然后continue就是继续循环,那他做了什么呢?那就是继续执行,
但凡执行到了continue语句,那就会直接继续执行下一次循环。

public class Hello {
    public static void main(String[] args) {
        System.out.println("测试break");
        for (int i = 0; i < 10; i++) {
            if (i == 5)
                break;
            System.out.println("你好");
        }
    }
}

请添加图片描述

以上是break的,我们现在来看看continue的

public class Hello {
    public static void main(String[] args) {
        System.out.println("测试continue");
        for (int i = 0; i < 10; i++) {
            if (i == 5)
                continue;
            if (i == 5)
                break;
            System.out.println("你好");
        }
    }
}

请添加图片描述

直接继续执行,跳过了break,但是打印也是只有9个了,因为也跳过了,就相当于执行到continue的时候就直接重新执行下一遍语句

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

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

相关文章

Python 工具库每日推荐【openpyxl 】

文章目录 引言Python Excel 处理库的重要性今日推荐:openpyxl 工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:自动生成月度销售报告案例分析高级特性条件格式数据验证扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计…

2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP&#xff1b;H3C-SE;CCIP——…

不容错过的10款文件加密软件,2024顶尖办公文件加密软件分享

随着数据隐私和信息安全越来越受到重视&#xff0c;文件加密已经成为保护个人和企业机密信息的必备工具。无论是敏感的个人文件、财务报表、商业机密&#xff0c;还是政府机密信息&#xff0c;都需要高效的加密工具来确保信息安全不被未经授权的人访问。在2024年&#xff0c;我…

盘点2024年4款打工人都在用的PDF软件。

PDF 软件在现代的办公或者是学习当中的应用非常广泛&#xff0c;已经成了很多人的必备工具。因为PDF 文件具有跨设备、跨系统的优势&#xff0c;所以在很多设备上都可以打开浏览。如果有了PDF 编辑软件&#xff0c;查看&#xff0c;编辑&#xff0c;分享也会变得更加方便简单&a…

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持&#xff0c;一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境&#xff0c;并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…

回到原点再出发

原文What Goes Around Comes Around作者Michael Stonebraker & Joseph M. Hellerstein其他译文https://zhuanlan.zhihu.com/p/111322429 1. 摘要 本文总结了近35年来的数据模型方案&#xff0c;分成9个不同的时代&#xff0c;讨论了每个时代的方案。我们指出&#xff0c;…

Vue3入门 - provide和inject组合使用

在Vue3中&#xff0c;provide和inject是用于实现依赖注入的一对API。它们允许在组件树中传递和接收数据&#xff0c;而不需要通过每一层显式地传递props。在<script setup>语法中&#xff0c;provide可以用来提供一个值&#xff0c;而inject可以用来接收一个已经提供的值…

RNN(循环神经网络)简介及应用

一、引言 在深度学习领域&#xff0c;神经网络被广泛应用于各种任务&#xff0c;从图像识别到语音合成。但对于序列数据处理的任务&#xff0c;如自然语言处理&#xff08;NLP&#xff09;、语音识别或时间序列预测等&#xff0c;传统的前馈神经网络&#xff08;Feedforward N…

启明智显工业级HMI芯片Model4功耗特性分享

Model4工业级MPU是国产自主面向工业应用的RISC-V架构的应用级芯片&#xff0c;内置玄铁64bit RISC-V CPU C906&#xff0c;主频高达600MHz&#xff0c;算力约1380DMIPS。支持RTOS、linux系统&#xff0c;支持LVGL工具开发UI&#xff1b; Model4系列工业级MPU具有极强的屏显、多…

每日OJ题_牛客_分组_枚举+二分_C++_Java

目录 牛客_分组_枚举二分 题目解析 C代码 Java代码 牛客_分组_枚举二分 分组 (nowcoder.com) 描述&#xff1a; dd当上了宣传委员&#xff0c;开始组织迎新晚会&#xff0c;已知班里有nnn个同学&#xff0c;每个同学有且仅有一个擅长的声部&#xff0c;把同学们分…

计算机组成原理:物理层 —— 编码与调制

文章目录 基本概念编码&#xff08;基带调制&#xff09;调制编码与调制码元 编码方式双极性不归零编码双极性归零编码曼彻斯特编码差分曼彻斯特编码优缺点 调制方法基本的带通调制方法调频 FM调幅 AM调相 PM 混合调制方法正交振幅调制 QAM-16 基本概念 编码&#xff08;基带调…

全国外卖霸王餐系统对接详细步骤操作?

对接全国外卖霸王餐系统并选择适合的系统时&#xff0c;你可以考虑以下几个步骤和标准&#xff1a; 明确业务需求&#xff1a;首先确定你的平台需要哪些功能&#xff0c;如展示霸王餐选项、下单、支付、订单跟踪等 。选择信誉良好的服务提供商&#xff1a;选择提供稳定服务的A…

【物流配送中心选址问题】基于改进粒子群算法

课题名称&#xff1a; 基于改进粒子群算法的物流配送中心选址问题 改进方向&#xff1a;动态惯性权重优化粒子群算法 代码获取方式&#xff1a; 模型描述&#xff1a; 待补充 Matlab仿真结果&#xff1a; 1. 模型优化后的仿真结果 2. 初始解对应的物流配送路径图 3. 粒子…

大厂最牛的 Java 面试八股文合集(全彩版),不接受反驳

金九银十已然来临&#xff0c;找工作的小伙伴比比皆是&#xff0c;很对小伙伴早早的就开始储备技术&#xff0c;准备面试了。 为了帮助小伙伴更好的应对面试&#xff0c;我拉来十几个大佬&#xff0c;汇总一线大厂的情况&#xff0c;给你整了一套超全的面试资料&#xff1a; 16…

以后再也不要说程序员不能拿诺贝尔了

当地时间10月8日&#xff0c;瑞典皇家科学院宣布&#xff0c;将2024年诺贝尔物理学奖授予美国普林斯顿大学的约翰霍普菲尔德&#xff08;John J. Hopfield&#xff09;和加拿大多伦多大学的杰弗里辛顿&#xff08;Geoffrey E. Hinton&#xff09;&#xff0c;以表彰他们“为推动…

如何通过视觉分析检测车辆逆行行为

随着交通网络的快速扩展和车辆数量的持续增加&#xff0c;城市交通管理面临着前所未有的挑战。交通事故的多发原因之一是车辆逆行&#xff0c;这种行为不仅严重威胁其他车辆和行人的安全&#xff0c;也加重了交通拥堵问题。因此&#xff0c;如何有效监控并预防车辆逆行成为城市…

亲测分享:四款必备PDF编辑工具!

除了本地PDF编辑器之外&#xff0c;也有一些在线PDF编辑工具&#xff0c;它们不仅能够提供便捷的编辑体验&#xff0c;还能实现跨平台的无缝协作。接下来会为大家推荐一些本地PDF编辑器以及在线PDF编辑器&#xff01; Foxit PDF Edit 直达链接&#xff08;复制到浏览器打开&a…

算法工程师重生之第二十三天(理论基础 分发饼干 摆动序列 最大子序和 )

参考文献 代码随想录 一、理论基础 贪心一般解题步骤 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 这个四步其实过于理论化了&#xff0c;我们平时在做贪心类的题目 很难去按…

[每日一氵] cython 中如何操作字典——结论是没什么更好的方法

举个例子&#xff0c;把这个函数写成 cython 的来加速 def insert_cell(ids_dict: dict, __id: str, count: int):if __id in ids_dict:ids_dict[__id] countelse:ids_dict[__id] count最简单的方式&#xff0c;就是直接扔到 pyx 文件&#xff0c;然后编译一下&#xff0c;速…

学生家长必备,中小学课本教材电子书批量下载工具

今天再整理更新几个最新的电子书教材网站和下载工具 苏生不惑备用号&#xff0c;分享各种黑科技软件资源和技巧&#xff0c;带你玩转互联网。 首先还是国家中小学智慧教育平台这个网站 https://basic.smartedu.cn/elecEdu 还有在线电子教材网站 http://www.haoduoyun.cc/ …