来,继续啊,下面我们来学习循环结构语句,循环结构有三种语句,分别是:
这三种循环可以做相同的事情,当然它们也有小的区别,至于它们的应用及区别,我们后面会详细讲解。这里我们来学习for循环
而在讲解for循环格式之前,我们先来看一下前面我们讲过的一个内容:这段代码的作用,是用来展示手机信息1000次。
还提到了这里的几个部分,分别是定义变量,条件判断,控制变量的变化,展示手机信息(可能被多次执行)
而for循环语句也是由这几部分组成。
格式:
格式说明:
范例:
执行流程:
知道了for循环的格式和执行流程后,下面我们到IDEA中去演示一下:
/*
for循环结构
*/
public class ForDemo {
public static void main(String[] args) {
for(int i=1; i<=5; i+=1) {
System.out.println("HelloWorld");
}
}
}
代码演示后,通过Debug查看了一下程序的执行流程,让我们更清晰for循环的执行流程。
讲解完毕后,大家赶快动手练习一下吧。
需求:在控制台输出1-5的数据
首先,我们来简单的分析一下:
分析:
① 反复进行输出的动作,使用循环结构
② 从1开始到5结束,设置初始化从1开始
③ 从1开始到5结束,设置判断条件为没有到5的时候继续执行,执行到超过5程序结束
④ 从1到5,每次增加1,设置条件控制每次+1
⑤ 将反复进行的事情写入循环结构内部,打印对应数据
分析完毕之后,我们到IDEA中去实现一下:
x/*
需求:在控制台输出1-5的数据
*/
public class ForTest01 {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
System.out.println("--------------");
for (int i = 1; i <= 5; i += 1) {
System.out.println(i);
}
System.out.println("--------------");
for (int i = 1; i <= 5; i += 2) {
System.out.println(i);
}
System.out.println("--------------");
//自增运算符:++
//它跟在变量的后面表示变量的值+1
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
System.out.println("--------------");
for (int i = 1; i <= 5; i++,i++) {
System.out.println(i);
}
System.out.println("--------------");
//我要获取数据5-1该怎么办呢?
for (int i=5; i>=1; i-=1) {
System.out.println(i);
}
System.out.println("--------------");
for (int i=5; i>=1; i--) {
System.out.println(i);
}
}
}
在讲解的过程中,我们还提出了自增运算符:++和自减运算符:--,并且演示了如何获取数据5-1。
讲解完毕后,大家赶快动手练习一下吧。
需求:求1-5之间的数据和,并把求和结果在控制台输出
首先,我们先到IDEA中去实现一下,然后再回来总结。
xxxxxxxxxx
/*
需求:求1-5之间的数据和,并把求和结果在控制台输出
*/
public class ForTest02 {
public static void main(String[] args) {
//定义一个求和变量,用于保存求和的结果
int sum = 0;
//我们通过for循环实现获取数据1-5
for (int i=1; i<=5; i++) {
//i,1,2,3,4,5
// sum = sum + i;
sum += i;
/*
第一次求和:sum = sum + i = 0 + 1 = 1
第二次求和:sum = sum + i = 1 + 2 = 3
第三次求和:sum = sum + i = 3 + 3 = 6
第四次求和:sum = sum + i = 6 + 4 = 10
第五次求和:sum = sum + i = 10 + 5 = 15
*/
}
//输出结果
System.out.println("1-5的求和结果是:" + sum);
}
}
最后,我们来总结一下求和思想的实现步骤:
实现步骤:
① 求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
② 从1开始到5结束的数据,使用循环结构完成
③ 将反复进行的事情写入循环结构内部
此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
④ 当循环执行完毕时,将最终数据打印出来
讲解完毕后,大家赶快动手练习一下吧。
需求:求1-100之间的偶数和,并把求和结果在控制台输出
首先,我们来简单的分析一下:
分析:
① 对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
② 对1-100的偶数求和,需要对求和操作添加限制条件
③ 限制条件是偶数才参与运算,因此条件应该是判断是否是偶数
④ 当循环执行完毕时,将最终数据打印出来
分析完毕之后,我们到IDEA中去实现一下:
xxxxxxxxxx
/*
需求:求1-100之间的偶数和,并把求和结果在控制台输出
*/
public class ForTest03 {
public static void main(String[] args) {
//1:求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
int sum = 0;
//2:对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
for (int i=1; i<=100; i++) {
//3:对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
if(i % 2 == 0) {
sum += i;
}
}
//4:当循环执行完毕时,将最终数据打印出来
System.out.println("1-100之间的偶数和是:" + sum);
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:在控制台输出所有的“水仙花数”
看到这个需求,我们首先要解决的问题就是,什么样的数据是“水仙花数”?它满足如下两个条件:
① 水仙花数是一个三位数
比如:111 222 333 370 371 520 999
② 水仙花数的个位、十位、百位的数字立方和等于原数
比如:
知道了什么是水仙花数后,我们再来回顾一下如何获取一个数据的个位,十位,百位:
假设一个三位数为x,则
了解了水仙花数相关的基础知识后,下面我们来说一下这个案例的实现步骤:
实现步骤:
① 获取三位数,通过循环实现
② 获取每一个三位数的个位,十位,百位
③ 判断该三位数是否是水仙花数
④ 输出水仙花数
知道了实现步骤,下面我们到IDEA中去实现一下:
xxxxxxxxxx
/*
需求:在控制台输出所有的“水仙花数”
*/
public class ForTest04 {
public static void main(String[] args) {
//1:获取三位数,通过循环实现
// for (int i=100; i<=999; i++) {
//
// }
for (int i = 100; i < 1000; i++) {
//2:获取每一个三位数的个位,十位,百位
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
//3:判断该三位数是否是水仙花数
if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) {
//4:输出水仙花数
System.out.println(i);
}
}
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:统计“水仙花数”一共有多少个,并在控制台输出个数
首先,我们先到IDEA中去实现一下,然后再回来总结。
xxxxxxxxxx
/*
需求:统计“水仙花数”一共有多少个,并在控制台输出个数
*/
public class ForTest05 {
public static void main(String[] args) {
//定义一个统计变量,用于数据的统计,初始化值为0
int count = 0;
for (int i = 100; i < 1000; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i) {
// System.out.println(i);
//1,2,3,...
count++;
}
}
//输出水仙花的个数
System.out.println("水仙花数一共有:" + count + "个");
}
}
最后,我们来总结一下统计思想的实现步骤:
实现步骤:
① 定义统计变量count,初始化值为0
② 在判定水仙花数的过程中,满足条件不再输出,更改为修改count的值,使count+1
③ 输出统计变量的值
讲解完毕后,大家赶快动手练习一下吧。
需求:输出所有五位数的回文数
看到这个需求,我们首先要解决的问题就是,什么样的数据是“回文数”?
那什么是“回文数”呢?一个数,无论是从左往右读,还是从右往左读,读起来都相同的数,叫做“回文数”
举例:
10101,12321:是回文数
12345:不是回文数
规律:
个位 = 万位
十位 = 千位
和百位无关
了解了回文数相关的基础知识后,我们来说一下这个案例的实现步骤:
实现步骤:
① 获取五位数,通过循环实现
② 获取每一个五位数的个位,十位,千位,万位
③ 判断该五位数是否是回文数
④ 输出回文数
知道了实现步骤,下面我们到IDEA中去实现一下:
xxxxxxxxxx
/*
需求:输出所有五位数的回文数
*/
public class ForTest06 {
public static void main(String[] args) {
//1:获取五位数,通过循环实现
for (int i = 10000; i < 100000; i++) {
//2:获取每一个五位数的个位,十位,千位,万位
int ge = i % 10;
int shi = i / 10 % 10;
int qian = i / 1000 % 10;
int wan = i / 10000 % 10;
//3:判断该五位数是否是回文数
if ((ge == wan) && (shi == qian)) {
//4:输出回文数
System.out.println(i);
}
}
//练习:统计五位数的回文数个数,并在控制台输出个数
}
}
在案例的最后,我们留下了一个练习,大家记得完成哦。
讲解完毕后,大家赶快动手练习一下吧。
需求:朋友聚会的时候可能会玩一个游戏:逢七过。
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过。
为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。
这样,大家将来在玩游戏的时候,就知道哪些数据要说:过。
首先,我们来简单的分析一下:
分析:
① 数据的范围1-100之间,用循环很容易实现
② 要满足的条件是:数字包含7(个位是7,或者十位是7),或者是7的倍数
xxxxxxxxxx
假如有一个数据:x
判断个位为7:x%10 == 7
判断十位为7:x/10%10 == 7
判断是7的倍数:x%7 == 0
分析完毕后,我们来说一下实现步骤:
实现步骤:
① 获取1-100之间的数据,通过循环实现
② 判断数字包含7或者是7的倍数
判断数据:要么个位是7,要么十位是7,要么能够被7整除
③ 在控制台输出满足条件的数据
知道了实现步骤,下面我们到IDEA中去实现一下:
xxxxxxxxxx
/*
需求:朋友聚会的时候可能会玩一个游戏:逢七过。
*/
public class ForTest07 {
public static void main(String[] args) {
//1:获取1-100之间的数据,通过循环实现
for (int i = 1; i <= 100; i++) {
//2:判断数字包含7或者是7的倍数(判断数据:要么个位是7,要么十位是7,要么能够被7整除)
if ((i % 10 == 7) || (i / 10 % 10 == 7) || (i % 7 == 0)) {
//3:在控制台输出满足条件的数据
System.out.println(i);
}
}
}
}
讲解完毕后,大家赶快动手练习一下吧。