广州番禺Python, Java小班周末班培训
第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6
6.2.1 理解循环控制
理解循环控制,首先得理解什么是循环。以下内容引自汉语词典:
循环意指往复回旋,指事物周而复始地运动或变化,或反复地连续做某事
那么,放到编程语言中进行类比,则很容易理解循环控制:通过某些指令来控制程序反复地执行。通过控制程序指令反复地执行,可以将程序员从繁琐的代码编写工作中解放出来。同学们先思考下面这个问题:
计算1到10之间的所有自然数的和
乍看是一个很简单的问题,要解决这个问题,只需将1到10之间的所有自然数罗列出来,然后再直接相加即可:
int sum = 1+2+3+4+5+6+7+8+9+10;
但如果把问题改成“计算1到100000之间的所有自然数的和”,该怎么编写程序代码?通过手写的方式,逐数字的进行相加是非常低效的。对于这类问题,编程语言中的循环控制可以提供完美解决方案。
6.2.2 for循环结构
在Java中通过for与while关键字来定义循环结构。
(1) for循环语法结构
for (initial_expression; condition_expression; state_expression){ ; }
initial_expression表示初始表达式,常见的操作是定义一个赋值表达式,condition表达式表示条件表达式,只要条件成立,循环就会一直执行。state_expression表示状态表达式,不断更新变量的状态,直到不满足条件表达式的条件,就会退出循环。for循环结构{}里面的为循环体。现在来看一个简单的例子,计算1到10之间的所有整数的和:
public class HelloJava{ public static void main(String[] args) { // 定义变量sum来保存1到10之间的所有整数的和 int sum = 0; /* (1) 初始表达式为定义了一个number变量,并初始化为1 (2) 条件表达式为number<=10,一旦number大于10就会退出循环 (3) 状态表达式为不断自增变量number的值 */ for(int number=1; number <=10; ++number) { // 循环体中的代码为sum不断与number累加 sum += number; } System.out.println("sum:"+sum); } }
在以上代码实例中,初始表达式只执行一次,即定义变量number并初始化为1。然后在条件表达式中判断条件是否成立,即判断number是否小于等于10,如果条件成立就执行循环体中的代码:将变量sum与number累加,再将求和的结果赋值给变量sum。最后通过状态表达式++number来进行自增运算,再进入下一次循环:判断条件是否成立,若成立就执行循环体中的代码,否则退出循环。对以上代码进行梳理,读者可进一步理解for循环的执行过程:
(1) 计算初始表达式的值
(2) 判断条件是否成立,如果成立就执行循环体中的代码,否则退出循环
(3) 计算状态表达式,更新变量的状态
(4) 重复(2)(3)步的操作
6.2.3 while循环结构
(1) while循环语法结构
while (expression){ ; }
expression表示表达式,当表达式的值为真值时,会循环执行while循环体中的的代码,否则会退出循环。
代码实例-计算1到10之间的奇数的和:
public class HelloJava{ public static void main(String[] args) { // 定义变量sum来保存1到10之间的所有奇数的和 int sum = 0; int number =1; int end = 10; // while中的条件表达式为number小于等于end,如果number大于end就退出循环 while(number <= end){ // 如果number与2求余后的结果为1,说明为奇数 if(number % 2 == 1) { // 为奇数就相加 sum += number; } // 在循环体中不断自增变量number的值,直到number大于end,退出循环 ++number; } System.out.println("sum:"+sum); } }
6.2.4 do-while循环结构
(1) do-while循环语法结构
do { ; } while(expression);
do-while循环结构会先执行循环体中的代码,然后再判断while中的表达式是否为真,如果为真就继续执行,否则退出循环。代码实例-计算0到10之间的偶数的和:
public class HelloJava{ public static void main(String[] args) { // 定义变量sum来保存0到10之间的所有偶数的和 int sum = 0; int number =0; int end = 10; do{ // 如果number与2求余后的结果为0,说明为偶数 if(number % 2 == 0){ // 是偶数就相加 sum+=number; } ++number; } while(number <=end); System.out.println("sum:"+sum); } }
6.2.5 循环结构可以嵌套
循环结构同条件控制结构一样,也可以嵌套。同样地,嵌套的深度不宜过深(通常不应该超过两层),否则会导致代码的可读性变差,代码难以维护。
代码实例-计算1到10之间的所有合数的和:
public class StateMachine{ public static void main(String[] args) { // 定义变量sum来保存0到10之间的所有偶数的和 int sum = 0; int end = 10; /* (1) 合数指自然数中除了能被1和本身整除外还能被其他数(0除外)整除的数 (2) 所以首先排除1和2,在循环中直接从3开始迭代 */ for (int number = 3; number < end; ++number){ // 如果从2到当前number的某一个数能整除number,说明一定是合数 // 思考题,为什么是从2开始? int number_ = 2; while(number_ < number){ if (number % number_ == 0){ // 如果求余后的结果为0,说明能被整除,是合数 sum += number; // 执行break语句退出循环,思考这里为什么要退出循环? break; } ++number_; } } System.out.println("0到10之间的合数的和:"+sum); } }
在上文的代码实例中,在for循环中嵌套了while循环,同样可以在for循环中嵌套for循环,在while循环中嵌套while循环,for循环。同学们可将上文中的代码实例全部改成for循环结构,以比较while循环与for循环的使用区别。
6.2.6 课后习题
(1) 简述你对循环控制的理解。
(2) 在Java中通过哪些关键字来编写循环结构?
(3) 编写一个程序,计算1到100之间的所有奇数的和,使用for循环进行实现。
(4) 编写一个程序,计算1到100之间的所有偶数的和,使用while循环进行实现。
(5) 将6.2.5节中的代码实例全部改为for循环结构。
(6) 分别用for循环和while循环来编写一个死循环,死循环即不会退出的循环结构。
(7) 计算1到100之间的所有质数的和。提示:质数是指大于1的自然数,且除了1和它自身外,不能被其他自然数整除。可参考6.2.5节中的代码进行实现,so easy!
6.2.7 高薪就业班
(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取学习资料: