五:循环结构

目录

 5.1、循环结构的四要素及分类 

 5.2、while循环

        5.2.1、语法结构、执行规律、注意事项

        5.2.2、练习

 5.3、do-while循环

        5.3.1、语法结构、执行规律、注意事项

        5.3.2、练习

5.4、for循环 

        5.4.1、语法结构、执行规律、注意事项

        5.4.2、for循环常见问题

                5.4.2-1、常见问题1:变量没有初始化

                5.4.2-2、常见问题2: 缺少循环条件,会进入死循环

                5.4.2-3、常见问题3:缺少迭代部分,如果循环条件满足,会进入死循环

                5.4.2-4、常见问题4:缺少初始值、循环条件、迭代部分,程序进入死循环

        5.4.3、练习

 5.5、嵌套循环结构(多重循环)

 5.6、 while、do-while、for循环总结

 5.7、break、continue的使用

        5.7.1、break语句(作用场景、作用和注意)

         5.7.2、break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

         5.7.3、continue

        5.7.4、 break和continue对比

5.8、 程序调试

        5.8.1、为什么需要程序调试

         5.8.2、如何执行程序调试

         5.8.3、程序调试图解(以九九乘法表为例)


 5.1、循环结构的四要素及分类 

1.循环结构的四要素

        (1)初始化条件(初始值)

        (2)循环条件--->是boolean类型

        (3)循环操作

        (4)迭代条件

                注意:通常情况下,循环结构都是因为(2)循环条件返回false了。

while循环                      
 初始值;                           int =1;  //初始值
 while(循环条件){            while(i<=100){  //循环条件
       //循环操作;               System.out.println("第"+i+"遍:好好学习,天天向上!");//循环操作
        //迭代部分               i++;   //迭代条件
 }                                     }

 2.循环语句分类

  • while循环
  • do-while循环
  • for循环

 5.2、while循环

        5.2.1、语法结构、执行规律、注意事项


 while循环
 	语法结构:
 		初始值;
 		while(循环条件){
 			//循环操作;
 			//迭代部分
 		}
 
 	执行规律:
 		(1)执行1次初始值操作
 		(2)判断循环条件,如果循环条件满足,执行循环操作代码,循环操作执行完,进行迭代,迭代后再次去判断循环条件是否满足
 			循环条件不满足,则结束整个循环结构的执行,继续执行循环结构之后的代码
 	注意:
 		(1)初始值只执行1次
 		(2)循环条件为布尔值,要么为true,要么为false
 		(3)迭代部分的作用是改变循环条件的变量值,从而让其在某一时刻不满足循环条件,结束循环结构
 				如果没有迭代部分,容易出现死循环,要尽量避免使用死循环

        5.2.2、练习

        (1)案例1:

                        使用while循环结构输出100遍“好好学习,天天向上”

package com.bdqn.demo03;

public class Demo01 {

	public static void main(String[] args) {
		//使用while循环结构输出100遍“好好学习,天天向上”
		
		//初始值
		int i =1;
		while(i<=100){  //循环条件
			System.out.println("第"+i+"遍:好好学习,天天向上!");  //循环操作
			i++;  //迭代部分:改变i的值,让i在某一时刻不满足循环条件,结束循环结构
		}
		
		System.out.println("程序执行完毕");	
	}
}

 (2)案例2:

        /*
         * 老师每天检查张浩的学习任务是否合格,
         * 如果不合格,则继续进行。老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分
         */

package com.bdqn.demo03;

import java.util.Scanner;

public class Demo03 {

	public static void main(String[] args) {
		/*
		 * 老师每天检查张浩的学习任务是否合格,
		 * 如果不合格,则继续进行。老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分
		 */
		
		//创建SCanner类对象
		Scanner input =new Scanner(System.in);
		System.out.println("请输入张浩的学习任务是否合格:");
		//初始值,从键盘获取数据
		String answer = input.next();
		
		//只要学习任务不合格,就一直循环进行学习
		while(answer.equals("不合格")){
			System.out.println("上午阅读教材,学习理论部分,下午上机编程,掌握代码部分");
			System.out.println("学习是否合格:");
			answer = input.next();
		}
		
		System.out.println("继续努力");
		
		/*
		 * 1、循环输出1,2,3,4,......98,99,100
		 * 2、求出1-100之间所有整数之和 1+2+3+4+......+98+99+100
		 * 3、循环输出1-100之间所有的偶数,2,4,6,8,...96,98,100
		 * 4、求出1-100之间所有偶数之和2+4+6+8+.....+98+100
		 * 5、循环输出1000-2000年之间的所有闰年
		 */
		

	}

}

 (3)作业练习:

                /*
                 * 1、循环输出1,2,3,4,......98,99,100
                 * 2、求出1-100之间所有整数之和 1+2+3+4+......+98+99+100
                 * 3、循环输出1-100之间所有的偶数,2,4,6,8,...96,98,100
                 * 4、求出1-100之间所有偶数之和2+4+6+8+.....+98+100
                 * 5、循环输出1000-2000年之间的所有闰年
                 */

package com.bdqn.demo03;

public class Demo1 {

	public static void main(String[] args) {
		/*
		 * 1、循环输出1,2,3,4,......98,99,100
		 * */
		
		//初始值
		int i = 1;
		while (i <= 100) { //循环条件
			System.out.println(i);  //循环操作
			i++;  //循环条件
		}
	}
}
package com.bdqn.demo03;

public class Demo2 {

	public static void main(String[] args) {
		/*
		 * 2、求出1-100之间所有整数之和 1+2+3+4+......+98+99+100
		 * */
		
		//声明一个int类型变量sum用来存储数据之和
		int sum=0;
		//初始值
		int i = 1;
		while(i<=100){//循环条件
			sum += i; //sum=sum+i;  循环操作
			i++;//迭代条件
		}
		
		System.out.println("整数之和为:"+sum);
	}

}
package com.bdqn.demo03;

public class Demo3 {

	public static void main(String[] args) {
		/*
		 * 3、循环输出1-100之间所有的偶数,2,4,6,8,...96,98,100
		 * */
		
		//初始值
		int i=1;
		while(i<=100){  //循环条件
			//现在只输出偶数,那么在输出i之前要对i之前是不是偶数进行判断
			if(i%2==0){   //循环操作
				System.out.println(i);
			}
			i++;	//迭代条件
		}
	}
}
package com.bdqn.demo03;

public class Demo4 {

	public static void main(String[] args) {
		/*
		 * 4、求出1-100之间所有偶数之和2+4+6+8+.....+98+100
		 * */
		
		//声明一个int类型的变量sum存储数据之和
		int sum=0;
		
		//初始值
		int i=1;
		while(i<=100){  //循环条件
			//求1-100之间的偶数之和,那么在相加之前,要对i进行判断,判断是不是偶数
			if(i%2==0){   //循环操作
				sum +=i;
			}
			i++;  //迭代条件
		}
		System.out.println(sum);
	}
}
package com.bdqn.demo01;

public class Demo05 {

	public static void main(String[] args) {
		/*
		 * 5、循环输出1000-2000年之间的所有闰年
		 * 
		 * 闰年的条件:
		 * 	(1)能被4整数,但不能被100整除,普通闰年
		 * 	(2)能被400整数,世纪闰年
		 */
		
		//初始值
		int year = 1000;
		while (year <= 2000) {//循环条件
			//判断year是不是闰年
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
				System.out.println(year);
			}
			year++;//迭代条件
		}
	}
}

 5.3、do-while循环

        5.3.1、语法结构、执行规律、注意事项

do-while循环

 	语法结构:
 		初始值;
 		do{
 			循环操作代码
 			迭代;
 		}while(循环条件);

 	执行规律:
 		(1)执行一次初始值代码
 		(2)先执行一次循环操作和迭代,然后判断循环条件是否满足,如果循环条件满足,则继续执行循环操作和迭代
 			如果循环条件不满足,则结束整个do-while循环结构,执行do-while循环结构后面的代码
 
    注意:
 		do-while循环结构,是先执行一次循环操作,再判断循环条件,也就是说do-while循环至少会执行一次循环操作
 		while循环结构,是先判断循环条件,再根据循环条件的结果决定是否执行循环操作,如果第一次循环条件就不能满足,循环操作就一次都不执行

        5.3.2、练习

        (1)案例1:

                        /*
                         * 经过几天的学习,老师给张浩一道测试题,
                         * 让他先上机编写程序完成,然后老师检查是否合格。
                         * 如果不合格,则继续编写…… 
                         */

        (2)案例2:

                        /*

                        * 使用do-while循环求1-100之间所有偶数之和

                        */

        (3)案例3:

                        /*
                         * 使用do-while循环输出1-100,每5个数字一行
                         * */

        (4)案例4:

                        /*使用do-while循环输出1000-2022之间所有的闰年,每5个年份一行
                         * 创造一个变量用来统计闰年的个数
                         * 判断闰年的条件:
                         *         1.能被4整除,但不能被100整除、
                         *         2.能被400整除
                         * */

    案例1:

package com.bdqn.demo02;

import java.util.Scanner;//导包

public class Demo01 {

	public static void main(String[] args) {
		/*
		 * 经过几天的学习,老师给张浩一道测试题,
		 * 让他先上机编写程序完成,然后老师检查是否合格。
		 * 如果不合格,则继续编写…… 
		 */

		//创建Scanner类对象
		Scanner input = new Scanner(System.in);
        
        //声明一个String类型的变量answer用来存储从键盘获取到的数据
		String answer;
		do{
			System.out.println("上机编程......");
			System.out.println("测试是否合格?:");
            //从键盘获取数据
			answer = input.next();
		}while(!answer.equals("合格"));  //判断从键盘获取的数据是否为“合格”,为true继续执行,为false结束循环
		
		
		System.out.println("继续努力......");
	}

}
    案例2:

package com.bdqn.demo02;

public class Demo02 {

	public static void main(String[] args) {
		//使用do-while循环求1-100之间所有偶数之和
		
		//声明一个int类型的变量sum用来存储数据之和
		int sum = 0;
		//初始值
		int i=1;
		do{
			//对i进行偶数判断
			if(i%2==0){
				//是偶数就进行累加
				sum+=i;
			}
			i++;
		}while(i<=100);
			
		System.out.println(sum);
	}
}
    案例3

package com.bdqn.demo02;

public class Demo03 {

	public static void main(String[] args) {
		/*
		 * 使用do-while循环输出1-100,每5个数字一行
		 * */
		
		//初始值
		int i =1;
		do{
			System.out.print(i+" ");
			//在输出数据之后进行是否需要换行的判断:如果输出的这个数能被5整除,就换行
			if(i%5==0){
				System.out.println();
			}
			i++;
		}while(i<=100);

	}

}
    案例4:

package com.bdqn.demo02;

public class Demo04 {

	public static void main(String[] args) {
		/*使用do-while循环输出1000-2022之间所有的闰年,每5个年份一行
		 * 创造一个变量用来统计闰年的个数
		 * 判断闰年的条件:
		 * 		1.能被4整除,但不能被100整除、
		 * 		2.能被400整除
		 * */
		
		//创建一个int类型的变量用来统计闰年的个数
		int count= 0;

		//声明一个int类型变量year并赋初始值1000
		int year = 1000;	
		do{
			//判断年份是否是闰年
			if(year%4==0&&year%100!=0||year%400==0){
				System.out.print(year+" ");
				count++;
				//对count进行判断,判断其是不是5的倍数,如果是,就进行换行
				if(count%5==0){
					System.out.println();
				}
			}
			year++;
		}while(year<=2022);
	}

}

5.4、for循环 

        5.4.1、语法结构、执行规律、注意事项


 for循环:
 	语法结构:
 		for(初始值;循环条件;迭代部分){
 			//循环操作代码
 		}
 	
	执行规律:
 		(1)先执行一次初始值代码
 		(2)判断循环条件是否满足,如果循环条件为true,则执行循环操作代码,执行完循环操作,进行迭代,迭代完再次进行循环条件判断,根据循环条件判断结果决定是否继续执行循环操作
 			如果循环条件为false,则结束整个循环结构,继续往下执行循环结构后面的代码
 	
	注意:
 		for循环也是先判断循环条件再决定是否执行循环操作。如果循环条件第一次就不满足,循环操作一次都不会执行
 

        5.4.2、for循环常见问题

                5.4.2-1、常见问题1:变量没有初始化

错误代码:
    //变量没有初始化
    for (; i < 10; i++) {
		System.out.println("这是 " + i);
	}

正确代码:
    int i =0;
    for (; i < 10; i++) {
		System.out.println("这是 " + i);
	}

                5.4.2-2、常见问题2: 缺少循环条件,会进入死循环

package com.bdqn.demo00;
public class Demo1 {

	public static void main(String[] args) {
		//缺少循环条件,会进入死循环
		for(int i=0;;i++){  //此部分缺少循环条件
		      System.out.println("这是 "+i);
		}
	}
}

                5.4.2-3、常见问题3:缺少迭代部分,如果循环条件满足,会进入死循环

package com.bdqn.demo00;

public class Demo1 {

	public static void main(String[] args) {
		//缺少迭代部分,如果循环条件满足,会进入死循环
		for(int i=0;i<10;){
		    System.out.println("这是 "+i);
		     //i++;  缺少此部分将进入死循环
		}
	}
}

                5.4.2-4、常见问题4:缺少初始值、循环条件、迭代部分,程序进入死循环

package com.bdqn.demo00;

public class Demo1 {

	public static void main(String[] args) {
		//缺少初始值、循环条件、迭代部分,程序进入死循环
		for(;;){ 
		     System.out.println("这是测试");
		}
	}
}

        5.4.3、练习

        (1)案例1:

                  // 循环输入某同学S1结业考试的5门课成绩,并计算平均分

        (2)案例2:

                         输出如下图所示的加法表:

                        

    案例1:

package com.bdqn.demo03;

import java.util.Scanner;

public class Demo02 {

	public static void main(String[] args) {
		// 循环输入某同学S1结业考试的5门课成绩,并计算平均分
		
		//创建Scanner类对象
		Scanner input = new Scanner(System.in);
		System.out.println("输入学生姓名:");
		
		//从键盘获取学生姓名
		String studentName = input.next();

		// 声明一个变量用来存储学生成绩之和
		double sum = 0;
		for (int i = 1; i <= 5; i++) {
			System.out.println("请输入5门课中第" + i + "门课的成绩:");
			//从键盘获取成绩
			double score = input.nextDouble();
			sum += score;
		}

		// 计算平均分
		double avg = sum/5;
		System.out.println(studentName+"的平均分是:"+avg);
	}

}
    案例2:

package com.bdqn.demo03;

import java.util.Scanner;//导包

public class Demo03 {

	public static void main(String[] args) {
		// 创建Scanner类对象
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个值:");

		// 从键盘获取数据
		int num = input.nextInt();
		System.out.println("根据这个值可以输出以下加法表:");
		// 声明int型变量i和j
		for (int i = 0, j = num; i <= num && j >= 0; i++, j--) {
			System.out.println(i + "+" + j + "=" + num);
		}
	}
}

 5.5、嵌套循环结构(多重循环)

1、嵌套循环(多重循环)

         (1)将一个循环在另一个循环体内,就形成了嵌套循环。其中,for、while、do-while均可以作为外层循环或内层循环。

        (2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。

        (3)设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。

2、注意:

  • n各循环可互相嵌套
  • n一般不超过三层
  • n外层循环变量变化一次,内层循环变量要变化一

2、 例题

        1、如何使用循环输出以下图形?

                

 

         2、九九乘法表

         3、100以内的所有质数

 5.6、 while、do-while、for循环总结

        1、语法

                while、do-while、for语法结构不一样

        2、执行顺序

  •                 while循环:先判断,再执行
  •                 do-while循环:先执行,再判断
  •                 for循环:先判断,再执行

        3、适用情况

  •                 循环次数确定的情况,通常选用for循环
  •                 循环次数不确定的情况,通常选用while或do-while循环

 5.7、break、continue的使用

        5.7.1、break语句(作用场景、作用和注意)

        1、作用场景

                在switch选择结构中和循环结构中

        2、作用

               (1) 在switch选择结构中遇到break,结束整个switch选择结构,执行switch选择结构后面的代码

               (2) 在循环结构中遇到break,结束循环后续所有操作,跳出整个循环结构,执行循环结构后面的代码

        3、注意

               (1)break语句只能作用在switch选择结构和循环结构中

               (2)break语句一般结合条件语句一起使用,因为结束某个代码是需要条件

         5.7.2、break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

  a:	{	......
  b:		{	......
  c:			{	......
					break b;
					......
				}
			}
		}

        案例:

         5.7.3、continue

  • continue 语句
    • continue只能使用在循环结构中
    • continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
    • continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环

        5.7.4、 break和continue对比

(1)使用场合
        break常用于switch结构和循环结构中
        continue一般用于循环结构中
(2)作用(循环结构中)
        break语句终止某个循环,程序跳转到循环块外的下一条语句
        continue跳出本次循环,进入下一次循环
        双重循环亦如此 

5.8、 程序调试

        5.8.1、为什么需要程序调试

        问题:

                 (1)编写程序过程中有时出现错误,但不好发现和定位错误,有没有好的方法呢?

                 (2)通过代码阅读或者加输出语句查找程序错误,当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”

        什么是程序调试

               (1)  当程序出错时,我们也希望能这样

         5.8.2、如何执行程序调试

                程序执行时忽闪一下就运行结束,怎么让程序一步一步运行?

    

        

         5.8.3、程序调试图解(以九九乘法表为例)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪VS恒哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值