上一篇我们讲了流程控制中的条件语句,条件语句讲了标准格式,基本格式,复杂格式;现在来说个名字,叫做嵌套,所谓嵌套就是嵌入套进去,那么条件语句嵌套就是在条件语句中再嵌套条件语句,什么情况下会进行嵌套呢,举个例子,先判断我们的工资是否大于5000,如果大于5000我们就想投资了,但是投资时候我们还是要判断收益率和本金,满足我们的要求才会投资,如果工资小于5000,那什么也别说,老实儿工作靠谱些
来看看伪代码;噢,对了一个概念,伪代码,伪代码就是按照代码的格式用我们可读的方式写出来的代码,可以阅读理解,但是无法运行,因为没有准确的语法,来看看
if (工资大于5000) {
//应该投资了
if(该理财产品收益率高,本金低){
投资
}else{
不投资了!
}
}else{
//这点儿工资啥也干不了
不投资了。。攒钱
}
这就是一种伪代码,标准的格式,非标准的语法和句柄,能看懂,不能执行;
这就用到了条件语句的嵌套;其实就是条件语句里面套了一层条件语句,并没有什么太特殊的,没事儿自己去试试;
有点要注意的就是在使用之前,先想好,有一个清晰的思路,用我一个朋友的话,就是女一女。。。当然他大舌头,实际是捋一捋!!捋清楚了再开始实现你个条件语句,绘制流程图,流程图这里就不介绍了,大家自己了解。
下面我们来了解下流程控制中的其他语句,
循环语句,循环语句的作用,不言而喻,就是用来做循环的,什么是循环呢?就是开始-->结束然后再开始,再结束,再开始在结束。。。知道我们不想让他再执行了,那么这个循环就结束了;
我们为什么要使用循环语句呢?举个最简单的例子,比如说现在呢,我们想要把1自加10次,其实不用循环也能实现,来看个例子
public class ProcessCycle{ public static void main(String [] args){ int index = 1; index = index + 1; index = index + 1; index = index + 1; index = index + 1; index = index + 1; index = index + 1; ... } }
这个例子是不能执行的。。。请注意噢,我偷了一下懒。执行十次,简单粗暴的来说我们手动写十行就行了,可是如果是要加100次,1000次呢?如果按这种方式,那估计你一天什么都不用干了,除了复制就是粘贴了;所以我们要使用循环语句,每次循环都执行相同的操作,只是参数不同了而已;
java中的循环语句有三种
for语句,while语句,do...while语句,
我们来一一了解,
循环语句1:for语句
标准格式如下:
for(初始化表达式; 判断表达式; 递增【或者递减】){
执行语句
}
初始化表达式,就是我们执行的起点,表达式呢就是我们执行的终点,这个递增或者递减表达式,是对初始化的变量,就是我们起点的那个变量的操作,其实这三个语句都是针对我们的for循环中使用的变量的,只有这个变量递增或者递减产生变化,才会在某些时候满足我们终点判断表达式,才能停止循环,否则的话,那就是死循环,没有终点。。。。说是死了,其实是活着一直在循环了。。。
来个例子大家就懂了,来,看代码
public class ProcessCycle{ public static void main(String [] args){ for(int i = 0; i < 10; i++){ System.out.println("i = " + i); } } }
第一句:int i = 0;可就是初始化语句,i < 10就是判断语句, i ++ 就是自加表达式
开始的时候我们初始化变量 i = 0,当i < 10的时候我们就进入循环体,执行打印的操作, 每次判断之后,我们让i 自加一次,我们动动手指头来数数,就知道执行十次之后就会停止了
来看看结果:
从0到9刚好十次,至于为什么不是从1到10我就不解释啦。自己考虑吧
一点,就是这个递增表达式,其实可以有多个,用逗号分隔即可
来看个例子
public class ProcessCycle{ public static void main(String [] args){ int n = 10; for(int i = 0; n > 0; i++, n--){ System.out.println("i = " + i); } } }
这里,判断表达式,我们的终点是n小于等于0的时候停止,因为进入循环的条件是n大于0,
运行结果是一样,我就不贴图了;
条件语句能嵌套,那循环语句肯定也可以嵌套,这个嵌套,我先不给例子,给大家留一道题,就是打印出来99乘法表,打印出来应该是 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 .....
这个大家自己试试,下次我们来解答,注意了,我们循环的时候,一层循环里面,嵌套另一层循环,第一层循环执行的时候,第一次满足条件,开始执行循环体,从头到尾,执行完了才会进入下一次循环,如果这个方法体是也是一个循环的话,会发生什么呢?内层的循环会执行一次呢?还是全部执行完了,才会执行外层循环的第二次呢?答案是,会先执行完内层的全部循环,然后才会执行外层的第二次 。
其实还有个for循环的增强版,不过这个增强版涉及到了iterator(迭代器),这里就先不说了,免得说多了大家头晕,我们继续讲循环语句。
循环语句2:
while循环,while循环的标准格式如下
while(判断条件){
需要循环执行的语句
(这里是不是应该做点什么,以保证不会一直循环下去,出现死循环呢)
}
这个一看就知道好写很多,入口就一个判断条件,满足条件了就执行,注意一点,和for循环相比,入口处少了初始化,少了递增递减,但是这个其实是省不了的,因为,没有这些我们无法让循环停止下来
来个例子瞧瞧
public class ProcessCycleWhile{ public static void main(String [] args){ int i =0; while(i < 50){ System.out.println("i的值是:" + i); } } }
这就是while,如果变量我们想要用自己的,那么肯定是要初始化的,所以放在了外面,
如果你是个猴急的孩子,你会发现,一直输出 i 是多少,没停止啊?是的,这段代码少了一个关键的地方,那就是递增或递减操作,我们没对 i 做任何操作,所以i 始终是小于50的,那就无线的循环下去了,而且打出来的只有一句,那就是i 的值是0;
需要在这段袋中加一句 i ++;
这就完美了,,来看完整的代码
public class ProcessCycleWhile{ public static void main(String [] args){ int i =0; while(i < 50){ System.out.println("i的值是:" + i); i ++; } } }
来看看执行结果
看,执行到49就停止了,正好50次;
while循环,讲解完毕,感觉如何,循环是不是有点儿意思?
这个while循环是先判断了条件,满足条件的话就执行循环体中的语句;
而我们接下来要讲解的另一种循环语句
do ... while
和上面这个while刚好的是相反的,
来看看标准格式的例子
public class ProcessCycleDoWhile{ public static void main(String [] args){ int i = 0; do{ System.out.println("i 的值是: " + i); }while(i > 0); } }
这是标准格式,while后面跟的是判断语句,刚才我们说这个循环和第一个while循环相反,相反在哪里呢?
从代码看,我们从上向下执行,先do,进入循环体,然后while,就进行判断了,如果条件不满足,就不再执行了,如果满足就再执行,也就说不管我们条件成立不成立,都会执行一次;
执行下看看
我们初始化i 是0,然后我们对 i 做任何操作,i是不满足大于0这个条件的,但是运行结果发现,其实还是执行了一次,这就是do。。while,先执行后判断,不管条件是否成立,都会执行一次;
而while循环是先判断后执行,如果条件不成立,那么就一次都不会执行。
这个do...while个人觉得有点儿鸡肋,因为每次都是先执行了,才会判断,很容易出现问题,所以一般情况下不建议使用,除非是有这样的特殊的需求才会使用;
到此为止,三种循环方式就这么讲完了,我讲的很浅薄,很简单;都是最基本的
接下来,留两道作业题
好好理解下循环和应用循环的场景;
问题1:写一个应用程序,声明三个变量int i = 0; int index = 100; int sum = 0;
利用者三个变量和while循环,实现1到100的累加运算
问题2:写一个应用程序,实现输出100以内的数,要求这些数是3的倍数,但是不能是5的数,也不能是9的倍数,
提醒下,如何判断一个数a是不是另一个数b的倍数的方法,就是使用运算符 % 这个符号还记得么?
取余, 我们叫做模 a 模上b a % b ==0 如果成立的话,那么就证明a是b的倍数
好了,大家好好研究下;
相关推荐
现在,我们将从零开始,深入探讨Z-Stack的相关知识点。 1. **Z-Stack的基础概念** - **Z-Stack架构**:Z-Stack通常由设备层、网络层和应用层构成,每一层都有特定的任务和功能,确保设备之间的高效通信。 - **...
2. API概览(APIOVERVIEW)展示了ZCL API的设计理念,其中包括了客户端/服务器模型(CLIENT/SERVER MODEL),协议栈架构图(STACK DIAGRAM),应用/配置文件的注册(APPLICATION/PROFILE REGISTRATION),以及应用...
这些IP核组件通常被集成在FPGA(Field Programmable Gate Array,现场可编程门阵列)设计中,以简化硬件设计流程并加速开发。以下是对ISE IP核使用说明文档中提到的一些核心知识点的详细解释: 1. 除法器(Dividers...
纯 Java ZigBee 应用程序框架 Bekko提供用于开发 ZigBee 应用程序的 Java API,并允许用户应用程序与标准 ZigBee 设备进行通信。 与其他“XBee API Java-Wrapper”不同,Bekko 具有 ZDO/ZDP 实现和标准化的 APS 数据...
### Z-Stack ZCL API 知识点解析 #### 一、引言 ##### 1.1 目的 本文档旨在提供Z-Stack ZigBee Cluster Library (ZCL) API 的详细介绍,帮助开发者理解并利用这些API进行ZigBee设备的应用程序开发。 ##### 1.2 ...
标题 "The document was created with Spire.PDF for Java" 提供了一个关键信息,即文档是使用Spire.PDF for Java工具创建或处理的。Spire.PDF for Java是一款由E-iceblue公司开发的PDF库,它允许Java开发者在应用...
- ZPR和ZCL:手动回零后自动设定工件坐标系及是否取消局部坐标系。 - 第一至第四参考点的坐标值:设定参考点的位置,便于工件定位。 5. **行程限位参数**: - 第一至第三行程限位的正向和反向值:定义行程边界,...
1. **时间戳**(41位):从2015年1月1日(UTC/GMT的00:00:00)开始至未来的毫秒数。这部分可以表示大约69年的时间,足以覆盖大部分业务场景。 2. **工作节点ID**(10位):用来区分不同的工作节点,可以配置为数据...
在“ZigBee3.0 基于ZCL通信——开关控制 串口地址控制switch”的项目中,重点是利用ZCL库实现对开关设备的控制。这通常涉及到以下几个关键技术点: 1. **OSAL (Operating System Abstraction Layer)**:OSAL是TI...
- 应用层(APL):讲解ZigBee应用框架,包括ZigBee PRO和ZigBee Cluster Library(ZCL),以及如何实现自定义应用。 3. **ZigBee网络构建** - 设备角色:节点类型如协调器、路由器和终端设备的角色和职责。 - ...
ZigBee Cluster Library(ZCL)是用于ZigBee设备之间通讯的一套协议集合,它定义了一组标准的cluster(群集),允许ZigBee设备进行更为细致和高效的数据交换。ZCL的文档为开发者提供了如何实现和使用ZigBee群集的...
##### 2. 维护视图簇 - **T-Code**: SM34。 - **视图簇**: CRMVC_GIL_APPDEF。 - **操作**: - 进入界面后,选择组件定义并点击“新条目”按钮,填写组件名称、描述和实施类别。 - 选择“组件集定义”,点击“新...
所有测试类的类别为ZCL_CI_CATEGORY_DSAG 。 ZCL_CI_TEST_DSAG_PRETTY_PRINT 用于检查Pretty Print是否已应用于源代码的类。 ZCL_CI_TEST_COMP_PROCS 用于执行各种基于代码的测试的类(有关详细信息,请参见docu)。...
J5接2、3,利用定时器T0、数码管模块和2个独立按键设计秒表: 1.显示格式: 分-秒-0.05秒(即50ms) 08-26-18:8分26秒900毫秒 2.按键均为按下有效: 独立按键S4:暂停/启动 独立按键S5:清零 相关链接《蓝桥杯单片机...
注意:生成的代码当前使用ZCL_OAPI_JSON,建议将实现复制到生成的全局类中的本地类 生成旨在在v702上运行 生成的客户端代码旨在在v702上运行 建筑/开发 prerequsites = 12+ 安装npm install npm test =运行单元...
2. **工业自动化**:在工业环境中,ZCL支持远程监控与控制,提高生产效率和安全性。 3. **医疗保健**:在医疗设备中集成ZCL,可以实现远程监测患者的健康状况,及时发送警报等。 #### 四、ZCL的关键特性 1. **灵活...
模式二:数码管前三位显示 -2- ,最后三位显示要倒计时的数。S6按下数字加一,S5按下数字减一。S4为清零按键(数字上限120,下限0) 模式三:数码管前三位显示-3- 设定的数字开始倒计时,数字为0时蜂鸣器响。 ...
ZCL的概念使得设备制造商能够更加专注于他们产品的核心功能,而不必从零开始构建复杂的通信协议。因此,对于任何想要深入了解ZigBee技术,特别是在设备控制和家庭自动化方面有应用需求的人来说,ZCL是一份难得的入门...
在Java开发中,生成PDF文件并添加公章图片是一项常见的任务,尤其在电子文档处理和企业自动化流程中。这里,我们探讨如何使用Java实现这一功能,并将生成的文件上传至阿里云存储服务。以下是一些关键知识点: 1. **...
- **READ**:从屏幕读取用户输入。 - **ALV**(Application List Viewer):用于创建复杂的表格输出。 #### 三、ABAP高级特性 ##### 3.1 面向对象编程 ABAP支持面向对象编程,包括类的定义、继承、封装等特性。...