什么是循环?
- 重复地做某件事
- 具有明确的开始和停止标记
循环的分类:
for
循环while
循环do....while
循环
for
循环
格式:
for (初始化语句;条件判断语句;条件控制语句) {循环语句体;
}
//例
for (int i = 1;i <= 10;i++) {SyStem.out.println("HelloWorld");
}
执行流程:
- 执行初始化语句。
- 执行条件判断语句,看其结果是
true
还是false
,如果是false
,循环结束;如果是true
,执行循环体语句。 - 执行条件控制语句。
- 回到2继续执行条件判断语句。
练习
基础案例1:输出HelloWorld
需求:打印5次HelloWorld
代码实现
public class ForDemo1 {public static void main(String[] args) {//需求:打印5次HelloWorld/*for (初始化语句体;条件判断语句;条件控制语句) {循环体;}*/for (int i = 1; i <= 5; i++) {System.out.println("HelloWorld");}}
}
基础案例2:输出数字
需求:打印1-5
代码实现
//需求1:打印1-5for (int i = 1; i <= 5; i++) {System.out.println(i);}
基础案例3:倒着输出数字
需求:打印5-1
代码实现
//需求2:打印5-1for (int j = 5; j >= 1; j--) {System.out.println(j);}
案例4:断线重连
在实际开发中,需要重复执行的代码,会选择循环实现。
比如:如下图。玩游戏时如果网络不好会经常断线重连。
那么断线重连这个业务逻辑就需要重复执行。
假设现在公司要求,断线重连的业务逻辑最多只写5次。
请用代码实现。
备注:断线重连的业务逻辑可以用输出语句替代。
代码实现
/*
在实际开发中,需要重复执行的代码,会选择循环实现。
比如:如下图。玩游戏时如果网络不好会经常断线重连。
那么断线重连这个业务逻辑就需要重复执行。
假设现在公司要求,断线重连的业务逻辑最多只写5次。
请用代码实现。
备注:断线重连的业务逻辑可以用输出语句替代。*/
public class Test13 {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {System.out.println("断线重连中" + '第' + i +"次执行");}}
}
案例5:求和
需求:在实际开发中,如果要获取一个范围中的每一个数据时,也会用到循环。
比如:求1-5之间的和。
代码实现
public class Test14 {public static void main(String[] args) {/*需求:在实际开发中,如果要获取一个范围中的每一个数据时,也会用到循环。比如:求1-5之间的和。*/int sum = 0;for (int i = 1; i <= 5; i++) {sum = sum + i;//也可以用sum += i;}System.out.println(sum);//得到1-5的和}
}
注:
- 不可以把
sum
定义在循环的里面,因为变量只在所属的大括号里有效。 - 如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效,当本次循环结束后,变量就会从内存中消失,第二次循环开始时,又会重新定义一个新的变量。
结论:如果我们要写累加求和的变量。可以把变量定义在循环的外面。
案例6:求和
需求:在实际开发中,如果要获取一个范围中的每一个数据时,会用到循环。
但是此时,大多数情况下,不会获取所有的数据,而是获取其中符合要求的数据。
此时就需要循环和其他语句结合使用。
比如:求1-100之间的偶数和。
IDEA快捷键:100.fori
代码实现
public class Test15 {public static void main(String[] args) {/*需求:在实际开发中,如果要获取一个范围中的每一个数据时,会用到循环。但是此时,大多数情况下,不会获取所有的数据,而是获取其中符合要求的数据。此时就需要循环和其他语句结合使用。比如:求1-100之间的偶数和。*///分析://1.获取1-100之间的数//2.累加求和(先判断再求和)int evenNumberSum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {evenNumberSum += i;}}System.out.println(evenNumberSum);}
}
案例7:统计满足条件的数字
需求:键盘录入两个数字,表示一个范围。
统计这个范围中既能被3整除,又能被5整除的数字有多少个。
代码实现
import java.util.Scanner;public class Test16 {public static void main(String[] args) {/*需求:键盘录入两个数字,表示一个范围。统计这个范围中既能被3整除,又能被5整除的数字有多少个。*///分析://1.键盘录入两个数字Scanner sc = new Scanner(System.in);System.out.println("请输入开始范围");int rangeStart = sc.nextInt();System.out.println("请输入结束范围");int rangeEnd = sc.nextInt();//2.用循环获取这个范围中的每一个数字int rangeNumber = 0;for (int i = 1; i <= rangeEnd; i++) {//3.对每个数字进行判断,统计有多少个满足要求的数字。if (i % 3 == 0 && i % 5 == 0) {//System.out.println(i);rangeNumber++;}}System.out.println(rangeNumber);}
}