Java程序设计基础笔记 • 【第6章 循环结构进阶】
全部章节 >>>>
本章目录
6.1 for循环
6.1.1 for循环的简介
回顾问题:输出100次“我爱你!”
for比while的代码更简洁,for语句封装了循环的4要素。
6.1.2 for循环的使用
示例:使用for循环实现求1~100的和
int sum =0;
for (int i = 1; i<= 100; i++) {
sum += i; //累加求和
}
System.out.println("1~100的和为"+sum);
示例:输入一个学生姓名和5门课程成绩,求其总成绩
//通过循环依次接收每门课程成绩
for (int i = 1; i <= 5; i++){
System.out.printf("请输入第%d门课程成绩:\n", i);
score = sc.nextInt();
sum += score;//累加
}
System.out.printf("%s同学本次考试总成绩:%d", name, sum);
6.1.3 for循环的表达式
循环次数与循环控制变量的关系:
循环控制变量的初值 |
循环条件 |
循环控制变量改变 |
循环次数 |
int i = 0 |
i < 5 |
i++ |
5 |
int i = 0 |
i <= 4 |
i++ |
5 |
int i = 5 |
i > 0 |
i-- |
5 |
int i = 4 |
i >= 0 |
i-- |
5 |
示例:输入一个数字求其加法表
Scanner input = new Scanner(System.in);
System.out.println(" 请输入一个数字 :");
int num = input.nextInt();
System.out.println(" 数字 "+num+" 的加法表如下 :");
for (int i = 0,j = num; i<=num; i++,j--) {
System.out.printf("%d + %d = %d\n",i,j,num);
}
for循环常见问题:
(1)省略表达式1,如for;表达式2;表达式3)。表达式1用于对循环控制变量进行初始化,省略for循不的表达式1,不会出现语法错误,我们可以将循环控制变量初始化放置到for循环之前。例如:
int i=1;
for(; i<=5; i++) {
System.out. printin( "Hello Java!" );
}
(2)省略表达式2,如for(表达式1;表达式3)。表达式2用于判断循环条件是否成立,省略表达式2后,即没有循环判断,循环条件永远为真。此时,循环将出现死循环。例如:
for(int i = 1; ; i++){
System.out.printIn( "Hello Java!" );
}
(3)省略表达式3,如for( 表达式1;表达式2;)。表达式3用于修改循环控制变量的值,省略表达式3后,循环控制变量的值不会变化,这样会导致循环永远为真,出现死循环。为了避免出现死循环,可以将表达式3放置于循环操作中,以达到未省略表达式3的效果。例如:
for(int i =0; i < 5;){
System.out.printin( "Hello Java!" );
i++;
}
(4)省略所有的表达式,如for(; ;)o省略for循环的三个表达式后,该循环则为死循环,想要结束死循环可以通过跳转语句实现。省略for循环的表达式后,不会导致程序的语法错误,但是程序的结构不够清晰,不便于阅读与维护。建议使用for循环时尽量不省略任何一一个表达式。
6.1.4 实践练习
6.2 深入理解for循环(一)
6.2.1 for循环案例(一)
(1)表达式:声明变量num用于储蓄用户输入的数字,找查能够整除num的数字,需从1开始直到num-1为止,因此,声明变量i作为循环控制变量,for循环结构中的3个表达式如下:
表达式1:int i = ;
表达式2:i < num
表达式3:i++
(2)循环操作:重复执行的操作是逐一判断1、2、3、.... num-1,能否被num整除,若能够被整除,则将对应数字进行累加。因此,声明变量sum,用于存储累加值,设置初始值为0,由于需要从1开始进行判断,而1的初始值也为1,此时,只需将i反复与num进行整除判断即可,将能整除num的i累加至sum中。
示例:在控制台中输入一个自然数,判断该数字是否为完全数。完全数,又称完美数,是指能整除该数字的所有数字(除本身外)之和等于本身的数字。
// 使用循环,在 1 ~ num-1中查找能整除 num的数字
for (int i = 1; i < num; i++) {
// 若能够整除 num,则进行累加
if (num % i == 0)
sum += i;
}
if (sum == num) // 若累加之和与 num相等,则为完全数
System.out.printf("%d 是完全数 \n", num);
else
System.out.printf("%d 不是完全数 \n", num);
6.2.2 求水仙花数
示例:在控制台中输出100~999之间所有的“水仙花数”。水仙花数是指各位数字的3 次幂之和等于本身的数字。例如:数字153。
for (int i = 100; i < 1000; i++) {
// 分离个位数字
int s = i%10;
int t = i/10%10;
int h = i / 100;
// 判断是否为水仙花数
if (i == s * s * s + t * t * t + h * h * h)
System.out.println(i);
}
6.2.3 实践练习
6.3 深入理解for循环(二)
6.2.1 三种循环的区别
(1)区别1:语法
(2)区别2:执行顺序
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行
(3)区别3:适用情况
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环
6.3.2 各种循环的使用场景
思考:年存款利率为3%, 本金为10000元,当存款总额超过 12000 元时,收益具体是多少 ?
分析:
需求:该业务可以转换为“当”存款总额小于12000元时,以3%利率增长。
条件:存款 < 12000。
结论:不明确循环次数,也无序先执行循环体,则用while循环
示例:年存款利率为3%, 本金为10000元,当存款总额超过 12000 元时,收益具体是多少 ?
double total = 10000;// 起始余额
double income;// 收益
while (total <= 12000) {
total = total + (total * 0.03); // 增加收益后的余额
}
income = total - 10000; // 收益赋值
System.out.printf(" 收益为 %.2f ", income);
思考:西游记中,孙悟空让猪八戒挑水,直到孙悟空满意为止。
分析:
需求:孙悟空让猪八戒挑水,猪八戒在每次挑完水后询问孙悟空还需要挑水与否,直到孙悟空说不用挑水为止。
条件:孙悟空说需要挑水。
结论:不明确循环次数且需要在执行一次后再次询问,所以使用do-while
示例:西游记中,孙悟空让猪八戒挑水,直到孙悟空满意为止。
do{
count++;
System.out.printf(" 猪八戒挑了第 %d 桶水后。\n",count);
System.out.println(" 猴哥,还要继续挑水吗? [y/n]");
answer = sc.next().charAt(0);
}while(answer == 'y' || answer == 'Y');
System.out.printf(" 猪八戒一共挑了 %d桶水后,停止了挑水工作。",count);
经验:
如果业务中可以获取到一个确切的循环次数,可以考虑用for循环,简而言之就是如果明确知道要重复几次做同样的事情,则使用 for 循环。
for语句场景:如果存在一个确切循环次数时,优先选择for循环实现。
在选择循环结构时,不是只有某种循环才能解决问题,而是优先选择对应的循环会使得代码更简单,业务处理更方便。
6.3.3 实践练习
6.4 跳转语句
- Java语言支持3种形式的跳转语句:break语句、continue语句和return语句。
- 循环结构中,常用的是:break语句和continue语句。
6.4.1 break语句
break:改变程序控制流程
用于do-while、while、for中时,可跳出循环而执行循环后面的语句
示例:输入一个区间,找出区间中第一个能够被3整除的数字。
Scanner sc = new Scanner(System.in);
int start, end;//区间
System.out.println("请输入一个区间:");
start = sc.nextInt();
end = sc.nextInt();
System.out.println("区间中能够被3整除的第一个数字:");
for (int i = start; i <= end; i++) {
if (i % 3 == 0) {
System.out.println(i);
break;//跳出循环结构
}
}
System.out.println("查找结束");
6.4.2 continue语句
continue:只能用于循环中
continue作用:跳过循环体中剩余的语句而执行下一次循环
示例:编写Java程序,累加1~99数字之和,要求跳过各位中含有3的数字。
int sum = 0;
for (int i = 1; i < 100; i++) {
int s = i % 10;//分割个位
int t = i / 10;//分割十位
if (s == 3 || t == 3)
continue;//进入下次循环
sum += i;//累加满足条件的数据
}
System.out.println("1~99之间各位中不包含3的数字之和:" + sum);
6.4.3 实践练习
总结:
- for循环中的表达式2称为条件表达式,用于判断for循环的条件是否成立,通常为关系表达式或逻辑表达式。
- for循环中的表达式3称为修改表达式,用于修改循环控制变量的值,通常对循环变量进行自增或自减操作。
- break语句可以在循环结构中使用,用于跳出循环,即提前结束循环。
- continue语句只能在循环结构中使用,用于终止本次循环,并且跳转至下一次循环。
Java程序设计基础笔记 • 【第6章 循环结构进阶】的更多相关文章
- Java程序设计基础笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java程序设计基础作业目录(作业笔记) 第1章 Java程序设计基础笔记 • [第1章 初识Java] 第2章 Java程序 ...
- Java 第8章 循环结构进阶
循环结构进阶 什么是二重循环? 二重循环的执行顺序是什么?
- Java程序设计基础笔记 • 【第5章 循环结构】
全部章节 >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...
- Java程序设计基础笔记 • 【第10章 数组】
全部章节 >>>> 本章目录 10.1 数组概述 10.1.1 数组优势 10.1.2 Java中的数组 10.1.3 数组的分类 10.2 一维数组 10.2.1 数组的 ...
- Java程序设计基础笔记 • 【第9章 方法与参数类型】
全部章节 >>>> 本章目录 9.1 有参数有返回值的方法 9.1.1 有参数有返回值的方法的定义和调用 9.1.2 返回值的传递过程 9.1.3 方法返回值的注意事项 9 ...
- Java程序设计基础笔记 • 【第1章 初识Java】
全部章节 >>>> 本章目录 1.1 程序的概念及Java语言介绍 1.1.1 生活中的程序 1.1.2 计算机程序 1.1.3 算法和流程图 1.1.4 实践练习 1.2 ...
- Java程序设计基础笔记 • 【第4章 条件结构】
全部章节 >>>> 本章目录 4.1 条件结构 4.1.1 程序流程控制 4.1.2 单分支if结构 4.1.3 双分支if结构 4.1.4 实践练习 4.2 多重条件结 ...
- Java程序设计基础笔记 • 【第7章 Java中的类和对象】
全部章节 >>>> 本章目录 7.1 理解类和对象 7.1.1 对象 7.1.2 抽象与类 7.1.3 类与对象的关系: 7.2 Java中的类和对象 7.2.1 类的定义 ...
- 【Java】《Java程序设计基础教程》第一章学习
一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...
随机推荐
- show processlist命令详解
1.show processlist; SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到 ...
- 应用springMVC时如果配置URL映射时如下配置
应用springMVC时如果配置URL映射时如下配置 [html] view plaincopy<servlet> <servlet-name>appServlet</s ...
- js实现递归菜单无限层
/*动态加载菜单*/ function dynamicMenu(data){ if (userID != "admin"){ //1.清空所有菜单 $("#menuLis ...
- maven根据profile,resources,filters来区分部署环境
项目过程中,在不同的阶段,分别需要部署开发环境,测试环境,线上环境.如果都用一套配置文件,很容易弄乱,所以维持多套配置文件很有必要. maven提供了一组属性以供开发人员灵活搭配,可以根据环境来打包, ...
- 一文读懂RESTful架构
转载自https://zhuanlan.zhihu.com/p/381554129 RESTful架构究竟是什么 别着急,想要了解RESTful,我们先来了解一位大佬Roy Thomas Fieldi ...
- 1888-jerry99的数列--factorial
1 #define _CRT_SECURE_NO_WARNINGS 1//jerry99的数列 2 #include<bits/stdc++.h> 3 int prime[40000] = ...
- Python利用ctypes实现C库函数调用
0X00 ctypes 是强大的,使用它我们就能够调 用动态链接库中函数,同时创建各种复杂的 C 数据类型和底层操作函数.使得python也具备了底层内存操作的能力,再配合python本身强大的表达能 ...
- CF1003C Intense Heat 题解
Content 给定一个长度为 \(n\) 的数列,求数列中所有长度 \(\geqslant k\) 的区间的最大平均值. 数据范围:\(1\leqslant k,n,a_i\leqslant 500 ...
- JS获取url中query_str JavaScript RegExp 正则表达式基础详谈
面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL ...
- ligerUI问题
1.checkboxColWidth:990,Grid的复选框的宽度设置为什么不起作用. 2.当grid出现横线不对齐时,可以设置detailColWidth:90,属性进行设置.此属性好像只是针对复 ...