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语言的实现机制,引入虚拟机 ...
随机推荐
- clickhouse输入输出格式 TSKV CSV
TSKVTSKV格式不适合有大量小列的输出.TSKV的效率并不比JSONEachRow差.TSKV数据查询和数据导入.不需要保证列的顺序. 支持忽略某些值,这些列使用默认值,例如0和空白行.复杂类型的 ...
- SpringMVC(4):文件上传与下载
一,文件上传 文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理 ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(6. 安装和配置ceph)
1. 简介 1.1. 这个在生产中没用上,生产上用的是nfs,不过为了显示咱会,也要写出来 1.2. 官方网站:http://ceph.com/ 1.3. 中文网站:http://docs.ceph. ...
- Mybatis读取数据实战
1.Mybatis基础配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configu ...
- 三维引擎导入obj模型不可见总结
最近有客户试用我们的三维平台,在导入模型的时候,会出现模型全黑和不可见的情况.上一篇文章说了全黑的情况.此文说下不可见的情况. 经过测试,发现可能有如下两种情况. 导入的模型不在镜头视野内 导入的模型 ...
- Android工具-DDMS
原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6686578 本文章的前提:已经安装了Eclipse和ADT.androi ...
- 什么是Docker?
容器技术的起源 假设你们公司正在秘密研发下一个"今日头条"APP,我们姑且称为明日头条,程序员自己从头到尾搭建了一套环境开始写代码,写完代码后程序员要把代码交给测试同学测试,这时测 ...
- SP16033 TIPTOP - Tip Top Game 题解
Description Alim 和 Sufian 是好朋友.他们最近找到了一个好玩的游戏,叫做 Tip Top.游戏规则如下: 确定一个整数. 找出这个整数的所有因子. Alim 先手,每人轮流取一 ...
- LuoguB2078 含 k 个 3 的数 题解
Content 给定一个数 \(n\),判断其数位中是否恰好有 \(k\) 个 \(3\). 数据范围:\(1<n\leqslant 10^{15}\),\(1<k\leqslant 15 ...
- java 常用类库:时间类LocalDate;LocalTime;LocalDateTime;Calendar 类;Date ;
LocalDate类 LocalDate类代表不带时区的日期,列入2020-12-20.该类提供了静态的now()方法来获取当前的日期.这个类是线程安全的. LocalTime类 代表不带时区的时间, ...
