Java程序控制结构,一文带你彻底拿下~

—— 程序的运行流程控制会解决程序是如何执行的

三大程序流程控制结构

        1)顺序结构:程序从上到下逐行逐行的执行,中间没有任何的判断和跳转

        2)分支结构:程序具有选择性的进入某一段代码

        3)循环结构:程序重复的执行某一段代码

思维导图

 

一.if分支结构

1.什么叫做分支结构

        ——程序有选择性的执行某一段代码,使程序具有选择性

2.if分支结构形式

1)单分支:if (条件表达式)

2)双分支:if (条件表达式) else

3)多分支:if (条件表达式) else if (条件表达式) else if (条件表达式) …… else

3.一个小case快速了解if分支结构

public class Test {public static void main(String[] args) {int a = 10;int b = 20;//单分子if (a > b) {System.out.println("a > b");}//双分支if (a < b) {System.out.println("a < b");//a < b} else {System.out.println("a > b");}//多分支if (a > b) {System.out.println("a > n");} else if (a < b) {System.out.println("a < b");//a < b} else {System.out.println("a == b");}}
}

4.分支语句详解

1)单分支形式:if (条件表达式) { 代码块; }

解释:条件表达式为true,则执行if语句里面的代码块,若是条件表达式为false,就跳过if语句,执行if (){ }后面的语句

import java.util.Scanner;
public class Test {public static void main(String[] args) {//单分支的实现int num1 = 0;int num2 = 0;Scanner sc = new Scanner(System.in);//输入条件//给num1,num2输入值num1 = sc.nextInt();num2 = sc.nextInt();//单分支if (num1 > num2) {System.out.println(num1 + ">" + num2);}if (num1 < num2) {System.out.println(num1 + "<" + num2);}}
}

2)双分支形式:if (条件表达式) { 代码块; } else { 代码块; }

解释:如果if的条件表达式为true,则执行if中的代码块,如果if的条件表达式为false,则执行else中的代码块

import java.util.Scanner;
public class Test {public static void main(String[] args) {//双分支的实现int num1 = 0;int num2 = 0;Scanner sc = new Scanner(System.in);//输入条件//给num1,num2输入值num1 = sc.nextInt();num2 = sc.nextInt();//双分支if (num1 > num2) {System.out.println(num1 + ">" + num2);} else {System.out.println(num1 + "<" + num2);}}
}

3)多分支形式:

if (条件表达式) { 代码块; } else if (条件表达式) else if (条件表达式) …… else { 代码块; }

解释:那个的条件表达式为true,则执行那个分支的语句块,如果都为false,则执行else中的语句块

import java.util.Scanner;
public class Test {public static void main(String[] args) {//多分支的实现int num1 = 0;int num2 = 0;int num3 = 0;Scanner sc = new Scanner(System.in);//输入条件//给num1,num2输入值num1 = sc.nextInt();num2 = sc.nextInt();num3 = sc.nextInt();//多分支if (num1 > num2) {System.out.println(num1 + ">" + num2);} else if (num1 > num3) {System.out.println(num1 + ">" + num3);} else if (num2 > num3) {System.out.println(num2 + ">" + num3);} else {System.out.println("hehe");}}
}

4)分支嵌套

在if语句里面含有if语句,再在if语句里面有if语句,……;在else语句里面含有if语句……(注意:最后不要嵌套超过3层,可读性不好)

import java.util.Scanner;
public class Test {public static void main(String[] args) {//分支嵌套的实现int data1 = 0;int data2 = 0;int data3 = 0;Scanner sc = new Scanner(System.in);//输入条件//给num1,num2输入值data1 = sc.nextInt();data2 = sc.nextInt();data3 = sc.nextInt();//分支嵌套if (data1 > data2) {if (data1 > data3) {System.out.println("最大值是:" + data1);} else {System.out.println("最大值是:" + data3);}} else {if (data2 > data3) {System.out.println("最大值是:" + data2);} else {System.out.println("最大值是:" + data3);}}}
}

 

 

二.switch分支结构

1.switch的语法规则

switch (表达式) {case 常量1:语句块;break;case 常量2:语句块;break;case 常量3:语句块;break;……default:语句块;break;//default后加上break养成好习惯
}解释:1)switch (表达式)中的表达式匹配对应的一个值,用于和case中的值匹配2)case 常量:当表达式的值等于常量,则执行case对应的语句块3)break: 表示退出switch语句4)如果表达式没有和任何一个case匹配上,则执行default语句

2.一个小case快速了解switch语句

import java.util.Scanner;
public class Test {public static void main(String[] args) {//switch的使用int today = 0;//输入Scanner sc = new Scanner(System.in);today = sc.nextInt();switch (today) {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;case 6:System.out.println("星期六");break;case 7:System.out.println("星期日");break;default:System.out.println("日期错误,请检查后重试");break;}}
}

3.switch的细节讨论

1)switch中的表达式类型应和case后面的常量类型一致,或者是可以自动转换成可以相互比较的类型 

import java.util.Scanner;
public class Test {public static void main(String[] args) {//switch中的表达式类型应和case后面的常量类型一致,或者是可以自动转换成可以相互比较的类型char ch = 0;//输入Scanner sc = new Scanner(System.in);ch = sc.next().charAt(0);//获取字符串的第一个字符switch (ch) {//char类型自动转换成int类型进行比较case 97:System.out.println("a");break;case 98:System.out.println("b");break;case 99:System.out.println("c");break;case 100:System.out.println("d");break;case 101:System.out.println("e");break;default:System.out.println("其他字符:" + ch);break;}}
}

2)switch(表达式)中的值类型必须是:byte、short、int、char、enum、String类型 

public class Test {public static void main(String[] args) {//switch (表达式)中表达式的返回值必须是:byte、short、int、char、enum、String类型byte b = 0;short s = 0;int num = 0;char ch = 0;String str = "abc";switch (b) {}//正确switch (s) {}//正确switch (num) {}//正确switch (ch) {}//正确switch (str) {}//正确//不能使用的类型:float、double、long等long data = 0;float f = 1.3f;double db = 1.45;//switch(f) {} //错误//switch(db) {} //错误//switch(data) {} //错误}
}

3)case 紧跟的值必须是常量,不能是变量或浮点类型 

public class Test {public static void main(String[] args) {//case 紧跟的值必须是常量,不能是变量或浮点类型int num = 10;int data = 11;double f = 13.14;switch (num) {//case data: //case后面不能跟变量//case f: //case后面不能跟变量//case 13.14: //case后面不能跟浮点类型}}
}

4)default语句可省略,在所有的case语句都没有匹配成功的情况下,执行default语句

5)break语句用来执行完一个case分支后跳出switch语句块,如果没有写break语句,程序会顺序执行到switch的结尾或执行到有break的case分支语句

import java.util.Scanner;
public class Test {public static void main(String[] args) {//break语句用来执行完一个case分支后跳出switch语句块//如果没有写break语句,程序会顺序执行到switch的结尾或执行到有break的case分支语句int season = 0;//输入Scanner sc = new Scanner(System.in);season = sc.nextInt();switch (season) {case 12:case 1:case 2:System.out.println("冬季");break;case 3:case 4:case 5:System.out.println("春季");break;case 6:case 7:case 8:System.out.println("夏季");break;case 9:case 10:case 11:System.out.println("秋季");break;default:System.out.println("月份有误,请检查!!!");break;}}
}

 

4.switch和if的比较 

1)配对比较,而且符合byte、short、int、char、enum、String6种类型,建议使用switch语句

2)区间判断,结果是boolean类型的数据,使用if分支语句

 

 

三.循环结构 

1.什么是循环结构

        ——程序中循环的执行某些代码,使用while、do-while、for进行循环

2.循环结构的格式

while(循环条件) {//循环代码块
}do {//循环代码块
}while(循环条件);for(循环初始化; 循环条件; 循环变量迭代) {//循环代码块
}

3.一个小case快速了解循环结构

public class Test {public static void main(String[] args) {//while循环int i = 1;while (i <= 10) {System.out.print(i + "\t");i++;}System.out.println();//do-while循环i = 1;do {System.out.print(i + "\t");i++;} while (i <= 10);System.out.println();//for循环for (i = 1; i <= 10; i++) {System.out.print(i + "\t");}}
}

4.循环四要素

1)循环语句

2)循环体

3)循环判断

4)循环变量迭代

public class Test {public static void main(String[] args) {//while循环int i = 1;//循环变量//循环判断while (i <= 10) {//循环体System.out.print(i + "\t");i++;//循环变量迭代}System.out.println();}
}

5.while、do-while循环的细节讨论

1)当循环条件为假(false)时,循环中的循环体不执行,循环条件为真(true)时,执行循环中的循环体 

public class Test {public static void main(String[] args) {//while循环int i = 11;//循环变量//循环条件为false,不执行循环体while (i <= 10) {//循环体}//条件为truewhile (i < 15) {System.out.print(i + "\t");i++;}System.out.println();}
}

2)do-while循环先执行后判断

3)break在while、do-while中的作用:跳出循环,执行循环后面的语句

public class Test {public static void main(String[] args) {//while循环int i = 1;while (i <= 10) {if (i == 5)break;//跳出循环System.out.print(i + "\t");//1 2 3 4i++;}System.out.println();//换行i = 1;do {if (i == 5)break;//跳出循环System.out.print(i + "\t");//1 2 3 4i++;} while (i <= 10);}
}

4)continue在while、do-while中的作用:跳过本次循环,执行下一次循环

5)while循环常使用在不知循环次数的情况下

public class Test {public static void main(String[] args) {//while循环int i = 1;while (i <= 10) {if (i == 5)continue;//跳过本次循环System.out.print(i + "\t");//1 2 3 4 死循环i++;}System.out.println();//换行}
}

6.for循环的细节讨论

1)for循环的循环变量只初始化一次

2)break在for循环中的作用:跳出循环,执行循环后的语句

public class Test {public static void main(String[] args) {for (int i = 1; i < 10; i++) {if (i == 5)break;System.out.print(i + " ");// 1 2 3 4}}
}

3)continue在for循环中的作用:跳过本次循环,但是循环变量迭代依然要执行

4)for循环使用在易知道循环次数的情况下 

public class Test {public static void main(String[] args) {for (int i = 1; i < 10; i++) {if (i == 5)continue;System.out.print(i + " ");// 1 2 3 4 6 7 8 9}}
}

 

7.三种循环的区别

1)do-while循环先使用后执行

2)三种循环都有循环四要素

3)三种循环都需要使用条件判断

4)循环表达式判断的结果都是boolean型

8.多重循环的使用

1)打印金字塔 

import java.util.Scanner;
public class Test {public static void main(String[] args) {int len = 0;//输入Scanner sc = new Scanner(System.in);len = sc.nextInt();//金字塔for (int i = 0; i < len; i++) {for(int j = 0; j < len - i; j++) {System.out.print(" ");}for (int j = 0; j <= i; j++) {System.out.print('*' + " ");}System.out.println();}}
}

2)九九乘法表 

public class Test {public static void main(String[] args) {//乘法表int len = 0;//输入Scanner sc = new Scanner(System.in);len = sc.nextInt();for (int i = 1; i <= len; i++) {for(int j = 1; j <= i;j++) {System.out.print(j + "*" + i + "=" + j*i + "\t");}System.out.println();}}
}

3)登录验证 

import java.util.Scanner;
public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String user = "林沐雨";String passwd = "123456";String loginUser = "";String loginPasswd = "";//登录判断for (int i = 1; i <= 3; i++) {//输入System.out.println("请输入用户名:");loginUser = sc.next();System.out.println("请输入密码:");loginPasswd = sc.next();if (loginUser.equals(user)) {if (loginPasswd.equals(passwd)) {System.out.println("登录成功~");break;} else {if (3 - i == 0) {System.out.println("账户已锁定,请稍微再试");break;}System.out.println("密码错误,你还有" + (3 - i) + "次机会");}} else {if (3 - i == 0) {System.out.println("账户已锁定,请稍微再试");break;}System.out.println("用户名错误,你还有" + (3 - i) + "次机会");}}}
}

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

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

相关文章

数据同步工具:Canal

大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有CSDN:https://zhenyu.blog.csdn.net/,感谢大家的支持,谢谢 送给大家一句…

ElasticSearch千万级数据同步方案

&#xff08;原创&#xff09;针对于将数据同步到ES中&#xff0c;有HttpHost、BulkProcessor等方式&#xff0c;怎么才能更高效的加载数据 在我开发测试过程中&#xff0c;一直觉得这些方式效率都不是很好 1、IndexResponse的方式&#xff0c;经过测试&#xff08;Linux环境&a…

系统间数据同步方案

一.RabbitMQ分布式集群架构 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统&#xff0c;分别是&#xff1a;cluster,federation,shovel …

MySQL 数据同步

MYSQL 数据备份 背景&#xff1a;在本地开发时&#xff0c;经常需要将本地测试数据同步到服务器上&#xff0c;通过navicat 或者sqlyog 虽然可以将数据便捷的导入导出&#xff0c;但总是觉得比较麻烦 于是想通过直接拷贝mysql数据文件的方式&#xff0c;进行数据的同步。 操作步…

mysql和elastic search数据同步方案

方案一 利用es api实时写入es中 优点&#xff1a;实时性高&#xff0c;能灵活控制写入es的时间 缺点&#xff1a;同步方案与业务逻辑耦合&#xff0c;严重依赖于es api&#xff0c;破坏了原有业务程序逻辑 demo&#xff1a;https://blog.csdn.net/fanrenxiang/article/deta…

不同业务场景下数据同步方案设计

企业开发实践中通常需要提供数据搜索的功能&#xff0c;例如&#xff0c;电商系统中的商品搜索、订单搜索等。通常&#xff0c;搜索任务通常由搜索引擎担当。如Elasticsearch。而我们的原始数据为了安全性等问题通常存储在关系型数据库中。在搜索数据前&#xff0c;我们需要先将…

mysql-elasticsearch数据同步方案

es数据同步方案 前言方案对比 logstash方式安装配置启动测试 canal方式MQ方式 前言 上两篇文章介绍过EL的安装和使用&#xff0c;接下来&#xff0c;我们面临的问题是怎么把数据同步到es里&#xff0c;比如&#xff0c;商城的商品数据&#xff0c;商品需要搜索&#xff0c;所以…

1、数据同步方案设计

数据同步要解决2个问题,1是存量数据同步,2是增是数据同步。存量同步只需要进行一次,所以又叫离线同步,或批处理同步。增量同步要解决每时每刻的数据变化同步,要运行多次,所以又叫实时同步,流处理同步。 数据准实时复制(CDC)是目前数据同步中大量使用的技术,随着国产化…

几种常见的数据同步方式

数据仓库的特性之一是集成&#xff0c;即首先把未经过加工处理的、不同来源的、不同形式的数据同步到ODS层&#xff0c;一般情况下&#xff0c;这些ODS层数据包括日志数据和业务DB数据。对于业务DB数据而言(比如存储在MySQL中)&#xff0c;将数据采集并导入到数仓中(通常是Hive…

DP1.4接口的PCB布局布线要求

DP接口即为DisplayPort接口&#xff0c;是由视频电子标准协会发布的显示接口。DP接口将在传输视频信号的同时加入对高清音频信号传输的支持&#xff0c;并且同时支持更高的分辨率以及刷新率。DP1.4通信端口规范新标准基于DP1.3规范&#xff0c;宽度不变但加入了显示压缩流技术&…

LoadRunner(2)

一、Controller 1.1场景设计 1.通过VUG打开 施压机器&#xff1a;发起请求的角色(用户本地电脑) 被压机器&#xff1a;处理请求的角色(服务器) 2.直接双击Controller 场景设计&#xff1a;需要关注三个部分 第一部分&#xff1a; 第二部分&#xff1a; 2.1运行场景…

[每周一更]-(第58期):选购佳能变焦镜头 EF-S 18-200mm F/3.5-5.6 IS的心得

参考地址&#xff1a; https://www.canon.com.cn/purchase/onlinesale/index3.html?typejdhttps://www.canon.com.cn/overview/efwidezoom.html 讲在买之前 由于没有买全画幅&#xff0c;买了残幅&#xff0c;好处是能选的镜头有限&#xff0c;不用太费钱了&#xff0c;需要…

教程 | 10分钟掌握手帐入门技能

亲&#xff0c;今天你画简笔画了吗&#xff1f; 如果没有在画纸上画&#xff0c;那就一起在手帐本上一展身手吧。 我先提供一点简笔素材&#xff1a; 1 2 3 手帐 有人说一入手帐深似海&#xff0c;从此笔纸要随行。 在日本&#xff0c;很多人都会随身带着一个被称为“手帐”的笔…

医院如何选择HIS及电子病历系统

近来有朋友来信问我:如何选择HIS及电子病历系统?我就从我个人的经历来浅谈这个问题,我是一名医护工作者,仅供参考。 如果是新建的医院首先对自身有一个清晰的定位,包括:品牌,价值,文化,理念。我们做成为一家什么样的医院?我们的品牌路线是什么线的?我们的核心价值观是什么?…

医院信息管理云平台源码 云HIS系统源码 4级电子病历系统

基层医院云HIS系统源码 高端商业his源码 有演示&#xff0c;可直接项目运营。 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规…

大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版

详情请点击查看 开发环境 &#xff1a;VS2010 C# ORACLE系统简介&#xff1a;1各种记录的书写&#xff0c;并可保留修改痕迹 在各种记录的书写过程中&#xff0c;根据系统提供的首次护理记录、一般护理记录、术前术后护理记录等模板&#xff0c;可方便、轻松地完成书写。上级…

医疗记录系统

医疗管理系统 | Dorian 项目介绍 &#x1f4d6; &#x1f449;基于Springbootvueuni-app的医疗管理系统. 含平台主体微信小程序和web后台数据管理平台. 项目技术栈 ⭐️ 微信小程序(MedicalSystem_uniapp)&#xff1a;uni-app Vue.js 后台管理系统(MedicalSystem_Web)&…

HIS医院EMR电子病历系统源码

1.新制作的电子病历添加到相应机构的病历模板列表中&#xff0c;默认是启用的&#xff0c;即该机构对应的一体化电子病历系统可以直接调用该模板运行相关业务。运营和管理用户可对已有的病历模板进行管理&#xff0c;对已有的病历模板进行查询、重新编辑、停用/启用、删除操作 …

住院管理系统

开发工具(eclipse/idea/vscode等)&#xff1a;vs2017 数据库(sqlite/mysql/sqlserver等)&#xff1a;sqlserver 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;基于ASP.net的住院管理系统 (1)用户注册:用户首次登录该系统时需要提交用户注册。(2)用户登录:用户可以登…