【JAVA 笔记】08 ch05_program_control_structure

  • 第5章 程序控制结构
    • 程序流程控制介绍
    • if 分支
    • switch 分支结构
    • for 循环控制
    • while 循环控制
    • do..while 循环控制
    • 跳转控制语句-break
    • 跳转控制语句-continue
    • 跳转控制语句-return

第5章 程序控制结构

程序流程控制介绍

  1. 顺序控制
  1. 分支控制
  1. 循环控制

if 分支

switch 分支结构

switch(表达式){case常量1;语句块1;break;case常量2;语句块2;break;...case常量n;语句块n;break;default:default语句块;break;
}
  1. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的
    类型,比如输入的是字符,而常量是int
  1. switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)

  1. case子句中的值必须是常量,而不能是变量
  1. default子句是可选的,当没有匹配的case时,执行default
  1. break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;

for 循环控制

for (循环变量初始化;循环条件;循环变量迭代){循环操作(可以多条语句);
}

while 循环控制

while(循环条件){循环体(语句);循环变量迭代;
}

do..while 循环控制

do{循环体(语句);循环变量迭代;
}while(循环条件);

跳转控制语句-break

break 语句用于终止某个语句块的执行,一般使用在switch 或者循环[for , while , do-while]中。

break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。如果没有指定break,默认退出最近的循环体

例:实现登录验证,有3 次机会,如果用户名为"丁真" ,密码"666"提示登录成功,否则提示还有几次机会,请使用for+break

import java.util.Scanner;
public class BreakExercise02 { //编写一个main方法public static void main(String[] args) {//实现登录验证,有3次机会,如果用户名为"丁真" ,密码"666"提示登录成功,//否则提示还有几次机会,请使用for+break完成//// 思路分析// 1. 创建Scanner对象接收用户输入  // 2. 定义 String name ; String passwd; 保存用户名和密码// 3. 最多循环3次[登录3次],如果 满足条件就提前退出// 4. 定义一般变量 int chance 记录还有几次登录机会// // 代码实现Scanner myScanner  = new Scanner(System.in);String name = "";String passwd = "";int chance = 3; //登录一次 ,就减少一次for( int i = 1; i <= 3; i++) {//3次登录机会System.out.println("请输入名字");name = myScanner.next();System.out.println("请输入密码");passwd = myScanner.next();//比较输入的名字和密码是否正确//补充说明字符串 的内容 比较 使用的 方法 equals// 字符串比较推荐这种写法,可以有效避免空指针。相比于("name".equals(丁真))if("丁真".equals(name) && "666".equals(passwd)) {System.out.println("恭喜你,登录成功~");break;}//登录的机会就减少一次chance--;System.out.println("你还有" + chance + "次登录机会");}}
}

跳转控制语句-continue

continue 语句用于结束本次循环,继续执行下一次循环。

continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环, 这个和前面的标签的使用的规则一样.

跳转控制语句-return

return 使用在方法,表示跳出所在的方法。当然可以,下面我将对每个部分进行详细的扩展解释,帮助您更深入地理解程序控制结构及其应用。

1. 程序流程控制介绍

程序控制结构是编程语言中最基本的部分之一,它们决定了程序执行的顺序。根据控制方式的不同,可以分为以下几种类型:

  • 顺序控制:这是最简单的执行方式,程序按代码书写的顺序一条接一条地执行。
  • 分支控制:根据条件判断的结果选择执行不同的代码块。主要通过 if 语句和 switch 语句实现。
  • 循环控制:当满足特定条件时,重复执行一段代码。常用的循环结构有 forwhiledo...while

2. if 分支

if 语句是最基本的条件判断结构,用于根据布尔表达式的结果来决定是否执行某个代码块。其基本形式如下:

if (条件) {// 当条件为真时执行的代码块
} else if (另一个条件) {// 当第一个条件为假,而此条件为真时执行的代码块
} else {// 当所有条件都为假时执行的代码块
}

3. switch 分支结构

switch 语句用于多条件分支的选择,适用于当需要根据一个变量的值来选择多个可能的操作之一时。其语法如下:

switch (表达式) {case 常量1:// 代码块1break;case 常量2:// 代码块2break;// 可以有多个 casedefault:// 如果没有任何 case 匹配,则执行 default 代码块break;
}
  • 表达式数据类型switch 中的表达式必须是 byteshortintcharenum 类型或 String 类型。
  • case 子句:每个 case 后面的值必须是常量,不能是变量。
  • default 子句:是可选的,当没有 case 匹配时执行。
  • break 语句:用于防止“穿透”,即执行完一个 case 后自动跳出 switch 语句,如果不使用 break,程序将继续执行下一个 case

4. for 循环控制

for 循环是一种预测试循环,通常用于已知循环次数的情况。其基本形式如下:

for (初始化; 条件; 更新) {// 循环体
}
  • 初始化:定义和初始化循环变量。
  • 条件:在每次循环开始前检查的条件,如果为真则执行循环体。
  • 更新:在每次循环结束后执行,通常用于更新循环变量。

5. while 循环控制

while 循环也是一种预测试循环,但它更灵活,适合于不确定循环次数的情况。其基本形式如下:

while (条件) {// 循环体
}

6. do...while 循环控制

do...while 循环是一种后测试循环,保证循环体至少执行一次。其基本形式如下:

do {// 循环体
} while (条件);

7. 跳转控制语句

- break

break 语句用于立即退出最内层的循环或 switch 结构。在多层嵌套的循环中,可以通过标签指定要退出的具体层次。

outer: // 标签
for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {if (某个条件) {break outer; // 跳出外层循环}}
}
- continue

continue 语句用于跳过当前循环体的剩余部分,并开始下一次循环。同样,可以通过标签指定跳过的具体层次。

outer: // 标签
for (int i = 0; i < 10; i++) {for (int j = 0; j < 10; j++) {if (某个条件) {continue outer; // 跳过内层循环,继续外层循环}}
}
- return

return 语句用于从方法中返回,可以选择返回一个值给调用者。如果方法的返回类型为 void,则不需要返回值。

public int add(int a, int b) {return a + b; // 返回 a 和 b 的和
}

8. 示例代码详解

您提供的示例代码实现了用户登录验证的功能,用户有三次登录机会。以下是代码的详细解释:

import java.util.Scanner;public class BreakExercise02 {public static void main(String[] args) {Scanner myScanner = new Scanner(System.in);String name = "";String passwd = "";int chance = 3; // 登录机会for (int i = 1; i <= 3; i++) { // 3次登录机会System.out.println("请输入名字");name = myScanner.next();System.out.println("请输入密码");passwd = myScanner.next();// 比较输入的名字和密码是否正确if ("丁真".equals(name) && "666".equals(passwd)) {System.out.println("恭喜你,登录成功~");break; // 登录成功,跳出循环}// 登录的机会减少一次chance--;System.out.println("你还有" + chance + "次登录机会");}}
}
  • 创建 Scanner 对象:用于从标准输入读取用户的输入。
  • 定义变量namepasswd 用于存储用户输入的用户名和密码,chance 用于记录剩余的登录机会。
  • for 循环:最多循环3次,每次循环提示用户输入用户名和密码。
  • 条件判断:使用 if 语句判断用户名和密码是否正确。如果正确,输出“登录成功”并使用 break 语句跳出循环。
  • 减少登录机会:如果输入错误,减少一次登录机会,并提示用户剩余的登录机会数。

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

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

相关文章

配置elk插件安全访问elk前台页面

编辑els配置文件vim elasticsearch.yml,添加以下配置文件 用elk用户&#xff0c;启动els服务 关闭防火墙&#xff0c;查看els启动是否成功&#xff0c;通过是否启动java进程来判断 或者通过查看是否启动9200和9300端口来判断是否启动 交互模式启动密码配置文件interactive表示交…

vscode通过.vscode/launch.json 内置php服务启动thinkphp 应用后无法加载路由解决方法

我们在使用vscode的 .vscode/launch.json Launch built-in server and debug 启动thinkphp应用后默认是未加载thinkphp的路由文件的&#xff0c; 这个就导致了&#xff0c;某些thinkphp的一些url路由无法访问的情况&#xff0c; 如http://0.0.0.0:8000/api/auth.admin/info这…

第三十章 章节练习商品列表组件封装

目录 一、需求说明 二、技术要点 三、完整代码 3.1. main.js 3.2. App.vue 3.3. MyTable.vue 3.4. MyTag.vue 一、需求说明 1. my-tag 标签组件封装 (1) 双击显示输入框&#xff0c;输入框获取焦点 (2) 失去焦点&#xff0c;隐藏输入框 (3) 回显标签信息 (4) 内…

Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者

近期&#xff0c;《黑神话&#xff1a;悟空》的爆火不仅让 AAA 游戏重回焦点&#xff0c;也引发了玩家与开发者的热议。Web2 游戏的持续成功导致部分 Web3 玩家们的倒戈&#xff0c;对比之下 Web3 游戏存在生命周期短且商业模式难以明确的问题&#xff0c;尤其在当前加密市场环…

STL学习-关联容器-pair数对

一.pair数对 1.pair介绍 pair是一个模板类&#xff0c;使用时引用<utility>文件 #include<utility> pair可将两个value处理为一个元素。C标准库内多处用到了这个结构。尤其容器map、unordered map和unordered multimap就是使用pair来管理其内部元素(key value)…

无纸化办公用什么软件能够最快提高工作效率!

一、无纸化办公 随着信息技术的飞速发展和环保意识的日益增强&#xff0c;无纸化办公(Paperless Office)逐渐成为现代办公的一种重要趋势。 从环保角度来看&#xff0c;传统的纸质办公方式消耗大量的木材等自然资源&#xff0c;造纸过程还会产生一系列的环境污染。据统计&…

分享一个游戏源码下载网站

今天给大家分享个不错的游戏源码下载的网站&#xff0c;可以自己下载搭建游戏&#xff0c;大多数都有视频教程 如果你动手能力不错的话&#xff0c;还可以自己修改代码 可以作为你学习参考。 手里有服务器的朋友还可以搭建在服务器上联机&#xff0c;和朋友们一起感觉还是很…

Linux -- 初识信号

目录 什么是信号&#xff1f; 如何使用信号&#xff1f; 代码&#xff1a; testSig.cc makefile&#xff1a; 验证&#xff1a; 2号信号&#xff1a; 9号信号&#xff1a; 建立对信号的认识&#xff1a; 信号的处理 自定义信号的处理方式&#xff1a; signal 函数…

群控系统服务端开发模式-应用开发-腾讯云上传工厂及七牛云上传工厂开发

记住业务流程图&#xff0c;要不然不清楚自己封装的是什么东西。 一、腾讯云工厂开发 切记在根目录下要安装腾讯云OSS插件&#xff0c;具体代码如下&#xff1a; composer require qcloud/cos-sdk-v5 在根目录下extend文件夹下Upload文件夹下channel文件夹中&#xff0c;我们修…

论文阅读神器:没时间读文献,谷歌AI工具NotebookLM 带你5分钟听懂一篇论文

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 读文献太慢&#xff0c;新文献根本读不完怎么办&#xff1f;谷歌的AI工具&#xff0c;NotebookLM&#xff0c;带你像听播客一样轻松“听”文献&#xff0c;短短几分钟内抓住论…

pycharm configurations中配置运行fastapi项目

环境 windows11 python3.11 fastapi0.115 使用virtualenv安装fastapi uvicorn pip install fastapi pip install uvicorn目的 在pycharm中可以一键运行&#xff0c;直接把命令行的运行参数配置到pycharm中, 即使用"uvicorn main:app --reload"运行main文件 配置 …

Bypassuac之白名单结合注册表方式

参考 Bypass UAC 原来这么简单 本章记录一下系统白名单文件结合注册表bypassuac&#xff0c;uac这个东西并不是Windows设置的防御机制而是相当于保护机制&#xff0c;只是用来控制用户行为的&#xff0c;弹个窗来提醒一下用户的行为&#xff0c;和直接的杀软是不一样的性质&am…

Canvas字体高度计算与PDF高度如何统一

因为英文书写时并不是像汉字一样就是一个方块字&#xff0c;比如下图p有部分是在基线以下&#xff0c;其他的字体都是以基线为参照书写&#xff0c;所以在Canvas中字(或字母)所占的高度是&#xff1a; metrics.boundingBoxAscent metrics.boundingBoxDescent上行间距下行间距…

UV紫外相机

在产业设备领域&#xff0c;运用相机进行检测的需求很大&#xff0c;应用也很多样&#xff0c;对于图像传感器性能的期望逐年提升。在这样的背景下&#xff0c;可拍摄紫外线&#xff08;UV&#xff1a;Ultra Violet&#xff09;图像的相机拥有越来越广泛的应用场景。将UV照明和…

Java NIO2 异步IO支持

NIO2 从 Java 7 在之前的NIO基础上&#xff0c;它提供了异步 IO 操作、文件系统访问增强等诸多功能 路径&#xff08;Path&#xff09;接口 Path 接口代表了文件系统的路径。它可以用来定位一个文件或目录。 提供了多种方法来解析、转换和查询路径信息。Paths 类提供了一些静…

实现短信中带有链接,直接打开微信小程序

步骤1&#xff1a;生成 Scheme&#xff08;明文&#xff09; 此处配置的 path 需要在小程序后台配置 之后得到一条 scheme weixin://dl/business/?appidxxx&pathpages/index/index 这条 scheme 在某些场景下可以直接点击打开小程序&#xff0c;比如&#xff1a;作为钉钉消…

鸿蒙网络编程系列41-仓颉版HttpRequest模拟登录示例

1. HttpRequest模拟登录简介 在本系列的第9篇文章《鸿蒙网络编程系列9-使用HttpRequest模拟登录示例》中&#xff0c;我们基于ArkTS语言在API 9的环境下使用HttpRequest发起HTTP请求&#xff0c;模拟了对目标网站的登录&#xff0c;本文将使用仓颉语言在API 12的环境中实现类似…

国内能用的Docker镜像源【2024最新持续更新】

国内能用的Docker镜像源【2024最新持续更新】 Docker 镜像加速列表&#xff08;2024年11月已更新&#xff09;配置方式1&#xff1a;临时使用配置方式2&#xff1a;长久有效 在国内使用 Docker 的朋友们&#xff0c;可能都遇到过配置镜像源来加速镜像拉取的操作。然而&#xff…

硅谷甄选(9)SKU模块

SKU模块 8.1 SKU静态 <template><el-card><el-table border style"margin: 10px 0px"><el-table-column type"index" label"序号" width"80px"></el-table-column><el-table-columnlabel"名称…

RabbitMQ 的集群

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ 的集群】面试题&#xff1f;希望对大家有帮助&#xff1b; RabbitMQ 的集群 RabbitMQ 是一种流行的开源消息代理&#xff0c;广泛用于构建分布式系统中的消息队列。随着应用程序规模的扩大&#xff0c;单一的 RabbitMQ 实…