Java选择与循环

news2025/1/20 12:17:03

 1.选择

    前言:什么是选择呢?在我们的人生中处处面临着选择,比如说在学校你可以选择玩,摆烂,当然也可以选择努力写代码,刷题。什么样的选择就会面临什么样的结果。

   其实程序和人生一样:顺序中夹杂着循环,伴随一次次选择不断成长

2.分支结构

1.语法格式1

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

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

注意:

括号中一定要为布尔表达式,否则程序会报错,不能像c语言中的那种写法if(!a)。

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

int score = 92;
if(score >= 90){
    System.out.println("吃个大鸡腿!!!");
}

2.语法格式2

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

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

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

int score = 92;
if(score >= 90){
    System.out.println("吃个大鸡腿!!!");
}else{
    System.out.println("挨大嘴巴子!!!");
}

3.语法格式3

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

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3
这是多分支,第一个是单分支

3.switch语句

基本语法

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

执行流程:

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

多个case后的常量值不可以重复
switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int
引用类型:String常量串、枚举类型
 

其实java里面的switch的功能是非常强大的,它可以识别字符串

 注意:

不能作为switch参数的数据类型有:float,double,boolean,long

switch与if的区别

看着switch和 if 好像没有都一样,他们肯定是有区别的。

最本质的区别就是,switch的参数不能是一个很复杂的表达式,像这样

他肯定是会报错的,switch语句做不到。

分号问题 

这个代码是一定会打印“hehe”的。

因为:此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块。

4.循环结构

while循环

基本语法格式:

while(循环条件){
    循环语句;
}

循环条件为true,则执行循环语句;否则结束循环

java的while语句百分之九十九和c语言一样,百分之一不一样,就是括号里面必须为布尔表达式

一些小练习

要求打印一到十的数字

 public static void main(String[] args) {
        int i = 1;
        while(i<=10){
            System.out.print(i+" ");
            i++;
        }
 }

 计算 1 到 100 的和

 public static void main(String[] args) {
        int i = 1;
        int sum = 0 ;
        while(i<=100){
            sum+=i;
            i++;
        }
        System.out.println(sum);
 }

计算5的阶乘

public static void main(String[] args) {
        int i = 1;
        int sum = 1;
        while (i<=5){
            sum*=i;
            i++;
        }
        System.out.println(sum);
}

【注意事项】:

1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行
 

给大家带来一个失败的案例

原因:此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码死循环了。

for循环

【基本语法】

for(表达式①;布尔表达式②;表达式③){
        表达式④;
}

  • 表达式1:初始化值,在循环最开始的时候执行,而且只能执行一次。
  • 表达式2:判断条件,如果满足条件就执行循环,不满足循环就结束循环。
  • 表达式3: 循环条件的更新方式

 【执行过程】

【循环的使用方法】 

打印1到10的数字

public static void main(String[] args) {
     for (int i = 1; i <= 10 ; i++) {
         System.out.print(i+" ");
     }
}

计算1到100的和

public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100 ; i++) {
            sum+=i;
        }
        System.out.println(sum);
}

 运行结果5050

【注意事项】(和while循环类似)

1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
4. 和while循环一样,结束单趟循环用continue,结束整个循环用break
 

给大家带来一个有趣的猜数字小游戏

public static void main(String[] args) {
            Random random = new Random(); // 默认随机种子是系统时间
            Scanner sc = new Scanner(System.in);
            int toGuess = random.nextInt(100);
            while (true) {  //如果没有猜对就会一直去循环
                System.out.println("请输入要输入的数字: (1-100)");
                int num = sc.nextInt();
                if (num < toGuess) {
                    System.out.println("低了");
                } else if (num > toGuess) {
                    System.out.println("高了");
                } else {
                    System.out.println("猜对了");
                    break;  //猜对了就结束循环
                }
            } sc.close();
       }

解析:这个程序的核心代码就是生成一个随机数,那么他是怎么实现的呢?

         Scanner sc = new Scanner(System.in);  //实例化一个随机数

         int toGuess = random.nextInt(100);        //生成一个100以内的随机数,并保存

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

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

相关文章

intellij idea拉取最新的依赖包

intellij idea setting 拉取最新的依赖包 File --> Settings --> Build, Execution, Deployment --> Build Tools --> Maven --> 勾选 Always update snapshots. 一般情况下&#xff0c;设置完就可以拉取到最新的依赖包了。 如下&#xff1a; 安装最新的依赖…

计算机视觉基础——基于yolov5-face算法的车牌检测

文章目录 车牌检测算法检测实现1.环境布置2.数据处理2.1 CCPD数据集介绍2.1.1 ccpd2019及20202.1.2 文件名字解析 2.2数据集处理2.2.1 CCPD数据处理2.2.2 CPRD数据集处理 2.3 检测算法2.3.1 数据配置car_plate.yaml2.3.2 模型配置2.3.3 train.py2.3.4 训练结果 2.4 部署2.4.1 p…

activiti的核心对象与API与对应操作的表与核心字段

【Deployment】 &#xff08;创建并部署一个新的流程定义&#xff09; 获取方式&#xff1a; repositoryService.createDeployment().deploy(); 对应的表&#xff1a;act_re_deployment 用于存储流程部署的相关信息。该表记录了每个流程部署的唯一标识符&#xff08;ID&#x…

【Redis】Redis在Linux与windows上的安装基本操作语法

一、Redis简介 Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保持在磁盘中&#xff0c;重启的时候可以再…

Python条件判断的运用

问题 在生活中&#xff0c;我们可以通过判断条件是否成立&#xff0c;来决定执行哪个分支。选择语句有多种形式&#xff1a;if语句&#xff0c;if-else语句&#xff0c;if-elif-else语句等。 Python使用if条件判断语句来实现条件判断时&#xff0c;可以在多个循环中实现对问题的…

【蓝桥杯 第十四届省赛Java B组】真题训练(A - C)正在更新

目录 A、阶乘求和 - BigInteger B、幸运数字 - 字符串 进制转换 暴力大法 C、数组分割 - A、阶乘求和 - BigInteger 思路&#xff1a; 当时比赛时&#xff0c;拿计算器算的&#xff0c;然后辛辛苦苦也没对 看到这个数肯定很大&#xff0c;而且只求后9位&#xff0c;阶乘越…

三篇文章了解计算机网络(一)

目标 三篇文章&#xff0c;由浅入深理解计算机网络 适宜人群 小小白、无计算机网络基础&#xff0c;非技术人员&#xff0c;网络兴趣爱好者 内容简介 本文不谈技术&#xff0c;不谈理论&#xff0c;那谈什么&#xff1f;--谈生活。。。跑题了&#xff1f; 正文 网络是什…

SECS/GEN HSMS半导体通信协议解析

协议族总体结构 HSMS消息格式&#xff08;网口连接&#xff09; 超时时间设置 T3 回复超时&#xff1a;指发送指令到接收到回复指令的最大时间&#xff1b; T5 连接间隔&#xff1a;指断开连接和重新连接的最小时间&#xff1b; T6 控制指令超时时间&#xff1a;主要指连接选…

本地部署清华大模型 ChatGLM3

ChatGLM 是一个开源的、支持中英双语的对话语言模型&#xff0c;由智谱 AI 和清华大学 KEG 实验室联合发布&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。ChatGLM3-6B 更是在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上增加…

读程序员的制胜技笔记02_算法与数据结构

1. 认知偏见 1.1. 程序员也是人&#xff0c;他们和其他人在软件开发实践中有着同样的认知偏见 1.2. 只有你的同事真正关心你是如何做事的——其他人都只想要一个好的、有效的产品 1.3. 高估了不使用的类型 1.4. 不关心正确数据结构的好处 1.5. 认为算法只对库作者重要 2.…

Express框架开发接口之今日推荐等模块

1.初始化 const handleDB require(../handleDB/index) // 获取全部模块 exports.allModule (req, res) > {(async function () {})() } // 更新或者添加模块 exports.upModule (req, res) > {(async function () {})() } // 根据id删除模块 exports.delModule (req, …

Proteus仿真--基于51单片机的可演奏电子琴设计(仿真文件+程序)

本文主要介绍基于51单片机的可演奏电子琴设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 其中通过矩阵键盘可以实现不同的音乐播放 仿真运行视频 Proteus仿真--基于51单片机的可演奏电子琴设计&#xff08;仿真文件程序&#xff09; 附完整Proteu…

竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

Flutter 组件集录 | InheritedNotifier 内置状态管理组件

theme: cyanosis 1. 前言 在上一篇 《Flutter 知识集锦 | 监听与通知 ChangeNotifier》 中&#xff0c;我们介绍了 ChangeNotifier 对象通知监听者的能力。并通过一个简单的模拟下载进度案例&#xff0c;介绍了它的使用方式&#xff1a; | 案例演示 | 监听-通知关系 | | --- | …

DBeaver 23.2.3发布,带来多项增强和修复

数据库管理工具DBeaver最新版本23.2.3已经发布。这个版本带来了一系列的增强和修复&#xff0c;提升了用户的使用体验和工作效率。 以下是DBeaver 23.2.3版本的一些亮点功能&#xff1a; 数据编辑器方面的改进&#xff1a; Excel (XLSX) 导出现在支持列自动拟合&#xff0c;…

人大金仓迁移报错ERROR: invalid byte sequence for encoding “UTF8“: 0x00

Oracle迁移人大金仓&#xff0c;报错&#xff1a; com.kingbase8.utilKSOLException: ERROR: invalid byte sequence for encoding “UTF8”: 0x00 报错信息&#xff0c;如图所示&#xff1a; 解决方案 1、设置参数&#xff0c;在kingbase.conf 最后面添加参数&#xff1a;ign…

串口通信(8)串口中断“边接收边解析数据“的通信程序

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

linux笔记总结-基本命令

参考&#xff1a; 1.Linux 和Windows比 比较 &#xff08;了解&#xff09; 1. 记住一句经典的话&#xff1a;在 Linux 世界里&#xff0c;一切皆文件 2. Linux目录结构 /lib • 系统开机所需要最基本的动态连接共享库&#xff0c;其作用类似于Windows里的DLL文件。几 乎所有…

流媒体服务实现H5实时预览视频

目录 背景方案业务实践细节注意 待办 背景 客户aws服务磁盘存储告急&#xff0c;最高可扩容16T。排查如下&#xff1a;主要是视频文件存在大量复制使用的情况。例如发布节目时复制、预览时复制&#xff0c;这样上传一份视频后最大会有四份拷贝&#xff08;预览、普通发布、互动…

PHP隐藏手机号码、银行卡号、真实姓名部分方法

1、隐藏手机号码,隐藏手机号中间部分 /*** 隐藏手机号码* param int $mobile 手机号码* param int $head 头部显示数* param int $tail 尾部显示数* param string $hide_str 隐藏字符串* return string*/ function getHiddenMobile($mobile, $head 3, $tail 4, $hide_str *…