目录
12.1 for循环
12.2 while循环——格式和流程
12.3 do-while循环——格式和流程
12.4 死循环
在业务中,需要使用到《循环》
什么是循环呢,
循环结构作用:
可以控制一段代码,然后重复执行的代码。
java中的基本循环有:
while循环 do…while循环 for循环
虽然所有循环结构都可以用
while或者do…while表示,但Java提供了另一种语句-for循环,使一些循环结构变得更加简单。
一.重点掌握并理解for循环的执行流程
for循环语句是
支持迭代的一种通用结构,是最有效,最灵活的循环结构。
for循环执行的次数是
在执行前就确定的。
二. 语法格式如下:
for循环格式:
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}
初始化语句:一般是定义一个变量,并给初始值
循环条件:一般是一个关系表达式,结果必须是true或者false
迭代语句:用于对条件进行控制,一般是自增或者自减
循环语句体:需要重复执行的代码
三.上实操,看案例,简单明了
比如:我们想要在控制台打印输出3个HelloWorld
//需求:打印3行Hello World
for(int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
如下图所示,是按照下面的① ② ③ ④, ② ③ ④... 的顺序来执行的;
当②条件为true时,再依次执行③④代码,然后回到②继续判断
当②条件为false时,就结束循环
先执行①②③, 再执行④②③ 在执行④②③ ... 直到步骤②不满足条件时。
具体执行的每一步可以看下面的图解
代码show
例子:
public class ForDemo01 {
public static void main(String[] args) {
int a = 1;//初始化条件
while (a <= 100) {//条件判断
System.out.println(a);//循环体
a += 2;//迭代
}
System.out.println("while循环结束!");
//初始化;条件判断;迭代
for (int i = 1; i <= 100; i++) {
System.out.println(i);
}
System.out.println("for循环结束!");
/**
* 关于for循环,有如下几点说明:
* 最先执行初始化步骤。
* 可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句
* 然后,检测布尔表达式的值。
* 如果为true,循环体被执行。
* 如果为false,循环终止,开始执行循环体后面的语句
* 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
* 再次检查布尔表达式的值。循环执行上面的过程
*/
//死循环
for (; ; ) {
}
}
}
例1:
//1.定义一个变量用于求和
int sum1 = 0;
//2.定义一个循环产生1-100之间的奇数
for (int i = 1; i < 100; i+=2) {
// i = 1 3 5 7 ...
//3.让需要求和的数据和sum1累加,
sum1 += i;
}
System.out.println("1-100之间的奇数和:" + sum1);
代码的执行流程分析
初始化sum1=0;
当i=1时:sum1+=1; sum1=1;
当i=3时:sum1+=3; sum1=4;
当i=5时:sum1+=5; sum1=9;
...
当i=99时:sum1+=99; sum1=2500
求奇数和的思路(只是求和的数据变成了奇数,思路和前面没有变化)
1)首先需要定义一个求和变量,这里命名为sum2
2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
结果:所有数据累加完之后最终sum1就是所有数据的和
//1)首先需要定义一个求和变量,这里命名为sum2
int sum2 = 0;
//2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
for (int i = 1; i <= 100; i++) {
//i = 1 2 3 4 5 6 ... 99 100
//3)在求和之前先对数据判断,如果是奇数,才和sum1累加;否则什么也不干
if(i % 2 == 1){
// i = 1 3 5 7 9 ... 99
sum2 += i;
}
}
System.out.println("1-100之间的奇数和:" + sum2)
偶数和:
int sum = 0;
for (int i = 2; i <= 100; i += 2) {
sum += i;
}
System.out.println("1~100之间偶数的和为:" + sum);
}
}
public class ForDemo02 {
public static void main(String[] args) {
//练习1:计算0到100之间的奇数和偶数的和
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <= 100; i++) {
if (i % 2 != 0) {//奇数
oddSum += i;//oddSum = oddSum + i;
} else {//偶数
evenSum += i;
}
}
System.out.println("奇数的和:" + oddSum);
System.out.println("偶数的和:" + evenSum);
}
}
注意: 掌握使用for循环批量产生数据。
for (int i = 1; i <= 100; i++) {
System.out.println(i);
}
求和的思路分析:
1)首先需要定义一个求和变量,一般命名为sum
2)再遍历得到所有需要求和的数据(1~100之间的所有整数)
3)让需要求和的数据和sum累加,
结果:所有数据累加完之后最终sum就是所有数据的和
需求:求1~100中所有整数的和
int sum = 0;
//定义一个循环,先产生1-100,这100个数
for (int i = 1; i <= 100; i++) {
//每产生一个数据,就把这个数和sum累加
sum += i; //sum = sum + i;
}
System.out.println("1-100的数据和:" + sum);
上面代码的执行过程:
i=1时:sum=0+1; sum=1;
i=2时:sum=1+2; sum=3;
i=3时:sum=3+3; sum=6;
i=4时:sum=6+4; sum=10;
...
i=100时: sum+=99; sum=5050
上面是1~100;
这是1~50的求和案例
public class Test11 {
public static void main(String[] args) {
int sum = 0;
for (int i=1;i<=50;i++){
sum+=i;
}
System.out.println("1~50的和为:"+sum);
}
}
例3:
public class ForDemo03 {
public static void main(String[] args) {
//练习2:用while或者for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % (5 * 3) == 0) {//每行
System.out.println();
//System.out.println("\n");
}
}
//println 输出完会换行
//print 输出完不会换行
}
}
小提示:idea快速写出for循环
如果循环100次,可以输如100.for,idea就有提示
四.for循环应用场景
具体在哪些实际场景下使用呢?
其实只要是重复做的事情,都可以用循环语句来做
比如:在京东的网页上展示100台手机信息,我们只需要把展示数据的代码写一份,重复执行就可以了。
再比如:再我们教学管理系统中,有很多员工需要展示在页面上,我们没必要每一个员工都写一份展示数据代码,只需要写一份重复执行就可以了。
重点掌握for循环的执行流程。 在以后,我们还会经常用到for循环,用多了,你就会越来越熟悉了。 假如有校长找人做教学管理系统或购物招人,恭喜你有这一技之长,发财啦!
一.格式:
二.上实操,看案例,简单明了
例1:
需求:打印5行Hello World
int i = 0;
while (i < 5) {
// i = 0 1 2 3 4
System.out.println("Hello World");
i++;
}
代码的执行流程如下图所示:按照① ②③④ ②③④ ... 的流程执行
如果②步骤为true,才循环执行③④步骤
如果②步骤为false,则循环结束
例2:
经典题目水仙花数
(从0至999之间各个位数的立方和等于本身的数等于水仙花数)
代码:
#include
int main (void)
{
int i=0; //定义初始值数
int a,b,c; //定义个位数百位数
while( i<=999) //条件
{
//开始拆解个位、十位、百位;
a = i/100; //百位
b = i/10%10; //十位
c = i%10; //个位
if (a*a*a+b*b*b+c*c*c == i) //if语句判断条件
{
printf("水仙花:%d\n",i); //为真输出语句块
}
i++; //再计算i,后面返回while
}
return 0;
}
//public class Test13 {
// public static void main(String[] args) {
// int a=10;
// while (a>=1){
// System.out.println(a);
// a--;
// }
//
// }
//}
如果条件一直是ture的话,则不会停止,所以通常会吧条件给限定一下。
例如:输出1-10
那就是循环十次,每次输出上一个数字+1
//public class Test13 {
// public static void main(String[] args) {
// int a=1;
// while (a<=10){
// System.out.println(a);
// a++;
// }
//
// }
//}
老铁,没毛病。
例3:
世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
分析:首先由于不知道折叠多少次,我们可以选择用while循环
1)纸张的初始化厚度为0.1毫米,珠峰的高度为8848860毫米
double peakHeight = 8848860;
double paperThickness = 0.1;
2)每次折叠纸张的厚度为原来的两倍,这是需要循环执行的
while(纸张厚度<8848860){
纸张厚度*=2;
}
3)需要求折叠的次数,可以用一个变量来记录折叠的次数
int 次数 = 0;
while(纸张厚度<8848860){
纸张厚度*=2;
次数++; //每次折叠次数累加
}
结果:等循环结束之后,打印记录次数的值,就是折叠多少次了。
按照上面分析的思路把代码写出来
// 1、定义变量记住珠穆朗玛峰的高度和纸张的高度。
double peakHeight = 8848860;
double paperThickness = 0.1;
// 3、定义一个变量count用于记住纸张折叠了多少次
int count = 0;
// 2、定义while循环控制纸张开始折叠
while (paperThickness < peakHeight) {
// 把纸张进行折叠,把纸张的厚度变成原来的2倍。
paperThickness = paperThickness * 2;
count++;
}
System.out.println("需要折叠多少次:" + count);
System.out.println("最终纸张的厚度是:" + paperThickness);
例4:
public static void main(String[] args) {
int i = 0;
while (true){
System.out.println(i++);
}
}
三.for、while 的区别与选择
while循环和for循环的执行流程是一样的
从功能来说:能够用for循环做的,都能用while循环做。
使用规范上来说:知道循环几次,建议使用for;不知道循环几次建议使用while
while循环语句在最前面检测循环条件。
所以循环体中的代码可能一次都不执行。
这种方法其实不经常用到,经常用到的是for循环;
一.
while循环特点:先判断,再执行
do…while 循环,它也有特点:先执行,再判断
二.
do…while 循环的格式:
如下图所示:do-while循环的执行流程,是按照① ②③④ ②③④... 的顺序执行的。
我们会发现,do-while循环的特点是先执行,再判断的。即使条件不成立,也会先执行一次。
三.上实操,看案例,简单明了
public class Test14 {
public static void main(String[] args) {
int a=1;
do{
System.out.println(a);
a++;
}while (a<=10);
}
// public static void main(String[] args) {
// int a=10;
// do{
// System.out.println(a);
// a--;
// }while (a>=1);
//
//
//
// }
}
四.
三种循环的区别
1. for循环 和 while循环(先判断后执行);
do...while (先执行后判断)
2.for循环和while循环的执行流程是一模一样的,
功能上无区别,for能做的while也能做,反之亦然。
如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
3 for循环中控制循环的变量只在循环中使用
while循环中,控制循环的变量在循环后还可以继续使用
一、概述
死循环就是指的是永不会结束的循环,也即是循环的判断条件永远为true。
二、分类
for();{}while(true){}
三、实例例1:
for:
public static void main(String[] args) {
for(;;){
System.out.println("EuropeanSheik");
}
}
while:
public static void main(String[] args) {
while(true){
System.out.println("EuropeanSheik");
}
}
do.while:
public static void main(String[] args) {
do {
System.out.println("EuropeanSheik");
}
while(true);
}
例2:
//for死循环
for ( ; ; ){
System.out.println("Hello World1");
}
//while死循环
while (true) {
System.out.println("Hello World2");
}
//do-while死循环
do {
System.out.println("Hello World3");
}while (true);
死循环有什么应用场景呢?
最典型的是可以用死循环来做服务器程序,
比如百度的服务器程序就是一直在执行的,你随时都可以通过浏览器去访问百度。如果哪一天百度的服务器停止了运行,有就意味着所有的人都永不为百度提供的服务了。
对于这样的应用我们目前了解一下就可以了。对于目前来说我们只要知道代码格式该怎么写,能达到什么效果就行。