这几天比较忙,把这事儿耽误了,今天赶紧补上,上一篇我们留了三道作业题,别说是两道啊!我会桑心,因为有一道在文章里面,就是利用for循环来打印个99乘法表
直接上代码了
public class Nine { public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 2; j < 10; j++) { if(i == 1 && j == 2){ System.out.println("1*1 = " + 1 + " "); } System.out.println(i + "*" + j + " = " + (i * j) + " "); } } } }
来看结果
由于太长,我没有把全部的都截图出来,就出来这么多;
在分析之前提个小问题,大家回去自己试试,如果没有
if(i == 1 && j == 2){ System.out.println("1*1 = " + 1 + " "); }
这段代码会如何?
如果 j 也从1 开始会如何?
这个就留给大家解决了,我们来稍微分析一下,首先就是打印的时候
System.out.println(i + "*" + j + " = " + (i * j) + " ")
在i * j之前我们先拼出了 i * j = 的字符串,仔细观察下,我们是怎么拼接的,直接用变量 + ""双引号里面的字符,这也是java中string类型数据,也就是字符串数据拼接的基本方法,大家可以自己尝试,这个并不陌生,
其他就没什么可说的,上一篇对于循环嵌套已经做过解释了;
来看第二题
利用while循环做100以内的加法,一直了三个变量
看代码
public class SumByWhile { public static void main(String[] args) { int i = 0; int index = 100; int sum = 0; while(i < index){ i++; sum += i; } System.out.println("sum = " + sum); } }
每次执行循环的时候,i ++ ,从0开始,然后是1,2,3,4,5...我们定义了一个sum变量,是相加之和,一开始是0,我们只要把每次i的值加到sum上,sum = sum + i;就是可以了,还记得 i ++的另一种形式么?
i = i + 1;套到这里,那就是sum+ =i;然后直接打印就ok了,来看看结果
怎么样,结果一样么?
来看第三题,打印出100以内是3的倍数,但是不是5 和9的倍数的数字
提示上一篇也说了,看一个数是不是另一个数的倍数怎么看? %这个符号是不是?这个符号是什么意思?
我直接上代码
public class while359 { public static void main(String[] args) { int i = 0; int index = 100; while(i < index){ if(i % 3 == 0){ if(i % 5 !=0 && i % 9 != 0){ System.out.println("100以内3的倍数,但不是5 和9的倍数 = " + i); } } i++; } } }
循环我们已经知道了,这段代码的核心就是两个if的判断,大家好好研究了
顺便来个问题,(i % 5 !=0 && i % 9 != 0)这里还可以怎么写?
来看结果
ok,习题已经讲完了,有问题可以留言!
来看看今天得内容
看标题就知道了,今天得内容是,继续,中断和返回
在说继续之前,我们来说说中断,这两个概念是相对的,
中断,主要的应用场景就是强行退出循环和分支语句;
使用的方法就是一个单词,break,不过别忘了在单词后面加个分号,这样break;这就是一行代码了
我们来看个例子:
public class WhileBreak { public static void main(String[] args) { int i = 1; while(i <= 10){ System.out.println("i = " + i); i++; if( i > 5){ break; } } } }
先来猜一猜结果,根据上文说的,break是用来强制退出循环或者分支语句,我们这里是循环,
break在if条件语句里面,也就是说,当if语句满足条件是才会break,那么i > 5的时候就是条件满足了,
就退出循环了,那么5以后的数字还会打印出来么?
来看看结果
怎么样,和我们猜想差不多吧,到了i =6的时候,发现i是但与5的,进入if条件语句的执行块,这个执行块的代码就是break,直接中断了循环,不会再继续下了;再来看两个变体
public class WhileBreakQueit { public static void main(String[] args) { int i = 1; while(i <= 10){ i++; System.out.println("i = " + i); if( i > 5){ System.out.println("退出!"); break; } } } }
这段运行的结果和上一段略有不同,多了一行退出,自己来试试,
来看下面这个对应的例子
ublic class WhileBreakQueit { public static void main(String[] args) { int i = 1; while(i <= 10){ i++; System.out.println("i = " + i); if( i > 5){ break; } if(i > 5){ System.out.println("退出"); } } } }
这个例子我们加了一句话,当i > 5的时候,打印退出,这个例子,大家试验下,看看结果是什么?这个退出两个字能打印出来么?
这个结果我就不截图了,因为答案就是没打印出来。原因呢,因为他的上面有个break;当i > 5的时候,先执行了break,中断了,下面这个条件语句虽然成立,但是没有执行;
由此可以,这个中断是直接中断退出,循环中在中断语句之后的代码不会被执行;
还有一点,我们发现中断语句都是和条件语句一起使用的,因为只有特定的条件我们才希望他中断,否则的话。。就没有循环了,进来直接就中断了!
接下来我们说说继续语句
继续语句和中断语句有些类似的地方,他也可以说是一种中断,但又不完全是中断,当我们使用continue的时候推出本次循环,注意是本次,既然他也是一种中断的话,那么中断之后循环体中的代码。。。什么后果我就不说了。
继续语句我们就用continue
来看个例子
public class ForContinue { public static void main(String[] args) { for (int i = 1; i < 10; i++) { if(i % 2 ==0 ){ continue; } System.out.println("i = " + i); } } }
这段代码,是说,当时2的倍数的时候continue,就是跳出本次循环从新开始下次循环,那么我们打出来的是哪些数字呢,掰掰手指头数数,我们来看结果
当当当。。。奇数,因为每次偶数的时候我们都是continue了,continue的时候直接从头开始,在continue之后的代码,我们都不管了,直接从头再来;这就是继续语句;
他和break有些类似,又有些不同;注意区分
之前提到过 switch case语句,如果记忆力好的同学应该记得每个case后面都有一个break,已保证执行完当前case之后,就会跳出分支语句;这里就不单独写例子了,大家可以回忆下。
接下来我们来说说返回语句;
返回语句就是在执行程序的过程中跳转到另外一个程序,一般返回语句用在子程序或者程序的方法中,注意,我们在使用return的时候可能是希望返回某个值,也可能不希望程序继续执行,所以才return,这就跟continue和break有一些类似,只是return可以不在循环或者分支中使用,来两个例子瞧瞧
public class ReturnMethod { public static void main(String[] args) { ReturnMethod rm = new ReturnMethod(); rm.setIntValue(4); rm.setIntValue(6); int returnValue = rm.getIntValue(6); System.out.println("returnValue = " + returnValue ); } public void setIntValue(int index){ System.out.println("--setIntValue--begin"); if(index > 5){ return; } System.out.println("--setIntValue--end;index = " + index); } public int getIntValue(int index){ return index * 10; } }
这个例子略微复杂,我们一步一步的看,首先new了一个ReturnMethod,为什么要new呢?因为我的main方法是static的,但是我们想在main方法中想调用的setIntValue和getIntValue不是static的,那么我们只能在main方法中构造出来ReturnMethod对象, 然后再使用这个对象的相应的方法,还有一种方式,不用new对象,也可以调用这两个方法,只是要对这两个方法做一些修改,怎么改就是今天得作业了。。。好好考虑下,static这个关键词
我们看setIntValue这个方法,传进去一个int型的参数,方法声明上这个void代表没有返回值,再看方法内部,第一句是打印出来这个方法开始了,第二部分是if条件语句,如果index大于5就用我们刚刚学的返回语句return;
最后一句是打印,这个方法结束了
第二个方法,方法声明上有个int,代表返回值是int类型的数据,方法中就一句话,return index *10也就是说,返回index的10倍;我们在main方法中接受了这个返回值,并打印了出来,如果我们没有接受这个返回。。也不用多解释了,给你东西你要,那么这个东西你就没有。。
在main方法中,我们调用了两次setIntValue方法,给了不同的参数,来猜猜打印出来的结果是什么?
来看结果
我们来分析一下,第一次调用setIntValue我们的参数是4,小于,没有执行返回语句,所以第一次的时候打印了开始,结束和index的值;第二次调用的时候,我们给的参数是6,比5大,那么会进入条件语句块,然后执行return,这个时候结束和index的值还会打印出来么?从结果看,没有打出来,原因就是刚才讲到了,返回之后后面的代码不会再执行了;那么不加if行不行呢?你可以动手试试,看看编译器同意不.....
执行了两次setIntValue之后,我们调用了getIntValue并且接受了返回值,打印出来,和我们猜想的应该没有太大的区别,就不多解释了
怎么样,这个return语句还是比较简洁的吧?
over,今天就到这里;记得今天有一道作业题哦!!!
相关推荐
现在,我们将从零开始,深入探讨Z-Stack的相关知识点。 1. **Z-Stack的基础概念** - **Z-Stack架构**:Z-Stack通常由设备层、网络层和应用层构成,每一层都有特定的任务和功能,确保设备之间的高效通信。 - **...
Z-Stack ZCL API 是德州仪器(Texas Instruments, 简称TI)发布的一份技术文档,主要涉及ZigBee技术中的ZigBee Cluster Library(ZCL)API。ZigBee是一种基于IEEE 802.15.4标准的无线通信协议,常用于个人区域网络,...
这些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. **行程限位参数**: - 第一至第三行程限位的正向和反向值:定义行程边界,...
在“ZigBee3.0 基于ZCL通信——开关控制 串口地址控制switch”的项目中,重点是利用ZCL库实现对开关设备的控制。这通常涉及到以下几个关键技术点: 1. **OSAL (Operating System Abstraction Layer)**:OSAL是TI...
1. **时间戳**(41位):从2015年1月1日(UTC/GMT的00:00:00)开始至未来的毫秒数。这部分可以表示大约69年的时间,足以覆盖大部分业务场景。 2. **工作节点ID**(10位):用来区分不同的工作节点,可以配置为数据...
- 应用层(APL):讲解ZigBee应用框架,包括ZigBee PRO和ZigBee Cluster Library(ZCL),以及如何实现自定义应用。 3. **ZigBee网络构建** - 设备角色:节点类型如协调器、路由器和终端设备的角色和职责。 - ...
ZigBee Cluster Library(ZCL)是用于ZigBee设备之间通讯的一套协议集合,它定义了一组标准的cluster(群集),允许ZigBee设备进行更为细致和高效的数据交换。ZCL的文档为开发者提供了如何实现和使用ZigBee群集的...
#### 二、开发流程详解 ##### 1. 创建自定义模型类 - **T-Code**: 使用SE24进行操作。 - **类名**: ZCL_CRM_GENIL_QUERY。 - **超类**: CL_WCF_GENIL_ABSTR_COMPONENT。 - **目的**: 定义一个自定义的组件类来支持...
所有测试类的类别为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 =运行单元...
- **控制结构**:顺序、选择(if-else语句)、循环(for、while、do-while)等结构的编写。 - **函数和递归**:函数的定义、调用和递归函数的使用。 - **数组和指针**:一维数组的定义和使用,理解指针与数组之间的...
蓝桥杯单片机——20 定时器,这个是我学习...模式三:数码管前三位显示-3- 设定的数字开始倒计时,数字为0时蜂鸣器响。 相关链接《蓝桥杯单片机竞赛各模块总结》:https://blog.csdn.net/ZCL__/article/details/1
随着物联网技术的发展,ZCL将继续发挥关键作用,促进不同领域内设备的互联互通。 通过深入学习这份文档,开发者可以更好地理解ZigBee Cluster Library的核心概念和技术细节,从而设计出更加高效、可靠的物联网解决...
Zigbee是一种无线通信技术,用于创建小型个人局域网,主要用于自动化控制和远程监控领域。Zigbee技术的适用性和效率使其在智能家居、工业控制以及智能能源管理系统中得到广泛应用。Zigbee技术的关键之一就是Zigbee簇...
ZCL的概念使得设备制造商能够更加专注于他们产品的核心功能,而不必从零开始构建复杂的通信协议。因此,对于任何想要深入了解ZigBee技术,特别是在设备控制和家庭自动化方面有应用需求的人来说,ZCL是一份难得的入门...