循环结构(for循环、while循环)
循环结构(for循环、while循环)
1、含义:
循环语句可以在满⾜循环条件的情况下,反复执⾏某⼀段代码,这段被重复执⾏的代码被称为循环体语句;
当反复执⾏这个循环体时,需要在合适的时候把循环判断条件修改为false,从⽽结束循环,否则循环将⼀直执⾏下去,形成死循环。
2、分类:
1、for循环
2、while循环
--do...while循环
3、循环语句的组成
①初始化语句:
⼀条或者多条语句,这些语句完成⼀些初始化操作。
②判断条件语句:
这是⼀个boolean 表达式,这个表达式能决定是否执⾏循环体。
③循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
④控制条件语句:
这个部分在⼀次循环体结束后,下⼀次循环判断条件执⾏前执⾏。通过⽤于控制循环条件中的变量,使得循环在合适的时候结束。
for循环
1、for循环:
语句格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
2、执⾏流程:
(1)执⾏初始化语句,只执⾏了⼀遍
(2)执⾏判断条件语句,看其结果是true还是false
如果是false,循环结束。
如果是true,继续执⾏。
(3)执⾏循环体语句 //注意:第3步是执⾏循环体,⽽不是控制条件语句
(4)执⾏控制条件语句
(5)回到(2)继续
3、例:打印10⾏HelloWorld
⽅法⼀:使⽤⽼⽅法
public class ForDemo1 {
public static void main(String[] args) {
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
⽅法⼆:利⽤for循环
public class ForDemo1 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
System.out.println("HelloWorld");
}
}
}
程序解释:
①int i=1; 初始化值的作⽤,因为我们要打印10句HelloWorld,从第⼀次开始,所以我们需要定义⼀个变量 int类型的变量去开始计数,表⽰第⼏次循环
②i<=10; 条件判断语句,这个语句使⽤控制是否进⼊循环的条件
③i++ 控制循环体中的条件的变化,在这⾥表⽰的是,每循环⼀次,i++
4、使⽤for循环的注意事项:
1、条件判断语句只能是boolean类型
2、当循环体的语句只有⼀条的时候,可以省略⼤括号,如果循环体的语句有多条的时候,这时候需要添加⼤括号,如果不添加循环语句只针对第⼀条语句有效(建议,永远不要省略⼤括号)
3、如果在⼩括号后加分号,默认有⼀个空语句体,后⾯的代码为正常的代码块,不参与循环
4、初始化语句可以不在for循环中的⼩括号中体现,但是必须在使⽤之前定义好
5、条件判断语句可以删除,但是删除之后,就没有了控制循环结束的条件,就变成了死循环
6、控制条件语句删除之后,也变成了死循环,你可以删除,但是初始化的变量的值⼀定
要在循环体中发⽣变化。
以下代码等价于上述⽅法⼆的代码:
public static void main(String[] args) {
int i = 1;
for (;i <= 10; ) { //初始化语句可以不在for循环中的⼩括号中体现,
//但是必须在使⽤之前定义好
System.out.println("数加");
i++; //控制条件语句可以不在for循环中的⼩括号中,但是⼀定要放 //在循环体语句中
}
}
}
5、 //需求:利⽤for循环在控制台输出1-10
public class ForTest1 {
public static void main(String[] args) {
for(int i = 1;i<=10;i++){
System.out.println(i);
}
}
}
执⾏结果如下:
1
2
3
4
5
6
7
8
9
10
Process finished with exit code 0
6、 //需求:利⽤for循环在控制台输出10-1
public class ForTest2 {
public static void main(String[] args) {
for(int i =10;i>0;i--){
System.out.println(i);
}
}
}
执⾏结果如下:
10
9
8
7
6
5
4
3
2
1
Process finished with exit code 0
7、 //需求:利⽤for循环求1-10之和
public class ForTest3 {
public static void main(String[] args) {
int sum = 0; //定义⼀个变量接收1-10之和,初始值随便给,⼀般情况下都是0 for(int i =1;i <=10;i++){ //获取1-10的数据
sum = sum +i;
}
System.out.println(sum); //在if语句外来接收这个sum值
}
}
8、 //需求:求出1-100之间的偶数和
分析:
①偶数:与2整除,余数为0
②判断是否为偶数:a%2==0
public class ForTest4 {
public static void main(String[] args) {
int sum =0; //第1步:先定义⼀个变量sum准备来接收他们的和
for(int i =1;i<=100;i++){ //第2步:获取1-100的数据
if(i%2==0){ //第3步:使⽤if语句来判断是否为偶数
sum = sum + i;
}
}
System.out.println(sum); //第4步:在for循环外,输出sum
}
}
9、 //需求:求出1-100之间的奇数和
分析:
奇数:与2整除,余数为1
public class ForTest5 {
public static void main(String[] args) {
int sum =0; //第1步:先定义⼀个变量sum准备来接收他们的和
for(int i =1;i<=100;i++){ //第2步:获取1-100的数据
if(i%2==1){ //第3步:使⽤if语句来判断是否为奇数
sum = sum + i;
}
}
System.out.println(sum); //第4步:在for循环外,输出sum
}
}
10、 //需求:求5的阶乘
5!=1*2*3*4*5
public class ForTest6 {
public static void main(String[] args) {
int res = 1; //定义⼀个变量res来接收他们的相乘结果
//因为是相乘,所以定义res不能为0
for(int i =1;i<=5;i++){ //获取1-5的数据
res = res * i;
}
System.out.println(res);
}
}
11、
//需求:请在控制台输出满⾜如下条件的五位数
个位等于万位
⼗位等于千位
个位+⼗位+千位+万位=百位
分析:
1、获取10000-99999的数据
2、获取获取个位,⼗位,百位,千位,万位
3、&&连接三个条件
public class ForTest7 {
public static void main(String[] args) {
for(int i =10000;i<=99999;i++){
int geWei = i%10; //获取个位:与10进⾏取模
int shiWei = i/10%10; //获取⼗位:先与10进⾏整除,再与10进⾏取模
int baiWei = i/10/10%10; //获取百位:先与10进⾏两次整除,再与10进⾏取模
int qianWei = i/10/10/10%10; //获取千位:先与10进⾏三次整除,再与10进⾏取模
int wanWei = i/10/10/10/10%10;//获取万位:先与10进⾏四次整除,再与10进⾏取模
if(geWei==wanWei && shiWei==qianWei && geWei+shiWei+qianWei+wanWei==baiWei){ System.out.println(i);
}
}
}
}
12、
需求:请统计1-1000之间同时满⾜如下条件的数据有多少个:
对3整除余2
对5整除余3
对7整除余2
分析:
1、定义⼀个变量统计个数 int num = 0;
2、for循环获取1-1000的数据
3、每次循环去判断该数据是否同时满⾜条件,如果满⾜,num+1
4、输出num
public class ForTest8 {
public static void main(String[] args) {
int geShu = 0;
for(int i =1;i<=1000;i++){
if(i%3==2 && i%5==3 && i%7==2){
geShu = geShu +1;
}
}
System.out.println(geShu);
}
}
while循环
1、while循环
语句格式:
(1)简化格式:
while(关系表达式){
循环体语句;
}
(2)完整格式:
初始化语句;
while(关系表达式){
循环体语句;
控制条件语句;
}
结论:for循环可以等价转换为while循环(但不是所有while循环都可以转换为for循环)
2、执⾏流程:
1、先执⾏初始化语句
2、判断关系表达式的结果,
如果是true,进⼊while循环,执⾏循环体内容
如果是false,就不进⼊while循环,不执⾏循环体内容
3、如果进⼊循环体内容,执⾏循环体代码和控制条件语句
4、直到关系表达式的结果为false,终⽌while循环
3、死循环介绍:
for(;;){}
while(true){}
4、 //需求:打印10遍HelloWorld
(1)利⽤for循环来实现
public class WhileDemo1 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
System.out.println("HelloWorld");
}
(2)利⽤while循环来实现
public class WhileDemo1 {
public static void main(String[] args) {
int i=1;
while (i<=10){
System.out.println("HelloWorld");
i++;
}
(3)死循环
public class WhileDemo1 {
public static void main(String[] args) {
int i1 = 0;
while (true){
System.out.println("这是死循环"+i1);
i1++;
}
5、while循环与for循环的区别:
while语句怎么输出(1)for循环结束后,在for循环中定义的初始化变量在外部⽆法使⽤;
while循环结束后,由于初始化值变量是在while循环外部定义的,所以在while循环外部可以访问到(2)for循环实现的是⼀个范围内的循环;
while循环,不知道将来会循环多少次,但总会有个点去停⽌
例:每分钟监控某⽹页登录⽤户的情况,直到有⾮法⽤户登录,统计在此之前的次数
boolean flag = true;
while(flag){
if(⾮法⽤户登录){
flag = false;
}
}
6、需求:我国最⾼⼭峰是珠穆朗玛峰:8848m,我现在有⼀张⾜够⼤的纸张,厚度为:0.01m。
请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的⾼度?
public class WhileTest1 {
public static void main(String[] args) {
int height = 8848;
int count = 0; //定义变量表⽰叠的次数
double houDu = 0.01; //初始化语句
while (houDu<=8848){
houDu = houDu * 2;
count = count + 1;
System.out.println("此刻是第"+count+"次叠,此时厚度为:"+houDu);
}
System.out.println("折叠了"+count+"次,厚度为:"+houDu);
}
}
输出结果为:
此刻是第1次叠,此时厚度为:0.02
此刻是第2次叠,此时厚度为:0.04
此刻是第3次叠,此时厚度为:0.08
此刻是第4次叠,此时厚度为:0.16
此刻是第5次叠,此时厚度为:0.32
此刻是第6次叠,此时厚度为:0.64
此刻是第7次叠,此时厚度为:1.28
此刻是第8次叠,此时厚度为:2.56
此刻是第9次叠,此时厚度为:5.12
此刻是第10次叠,此时厚度为:10.24
此刻是第11次叠,此时厚度为:20.48
此刻是第12次叠,此时厚度为:40.96
此刻是第13次叠,此时厚度为:81.92
此刻是第14次叠,此时厚度为:163.84
此刻是第15次叠,此时厚度为:327.68
此刻是第16次叠,此时厚度为:655.36
此刻是第17次叠,此时厚度为:1310.72
此刻是第18次叠,此时厚度为:2621.44
此刻是第19次叠,此时厚度为:5242.88
此刻是第20次叠,此时厚度为:10485.76
折叠了20次,厚度为:10485.76
Process finished with exit code 0
1、语句格式:
(1)基本格式
do {
循环体语句;
}while(判断条件语句);
(2)扩展格式(开发中使⽤扩展格式)
初始化语句;
do {
循环体语句;
控制条件语句;
} while(判断条件语句);
2、例:统计1-10之和
public class DoWhileDemo1 {
public static void main(String[] args) {
//统计1-10之和
int sum = 0;
int i = 1;
do {
sum = sum + i;
i++;
} while (i <= 10);
System.out.println("1-10之和为:" + sum);
}
}
3、debug查看运⾏过程:
(1)先在左边将你要查看流程的代码标红
(2)右击debug
(3)点⼀次》,执⾏⼀次步骤,观察执⾏流程和变量值的变化
debug的好处:
让我们更加清晰地明⽩程序是如何执⾏的,以及变量是如何变化的
4、 do...while和while区别
(1)while循环,执⾏的时候,会先进⾏⼀次判断,如果是true才执⾏循环体
(2)do...while循环,执⾏的时候,会先执⾏⼀次循环体内容,然后再判断是true还是false *写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环*
例: public class DoWhileDemo3 {
public static void main(String[] args) {
int i = 0;
while (i>0){
System.out.println(i);
i--;
}
System.out.println("============do...while循环============");
do{
System.out.println(i);
i--;
}while (i>0);
}
}
输出结果为:
============do...while循环============
Process finished with exit code 0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论