• 多重嵌套循环


    嵌套循环介绍

    1.将一个循环放在另一个循环体内,就形成了嵌套循环。for while dowhile 均可作为外层循环和内层循环
    2.嵌套循环就是把内层循环当成了外层循环的循环体,当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层循环的当次循环,开始下一次的循环
    案例:
    for(int a = 1;a<2;a++){
    for(int b = 1;b<3; b++){
    System.out.println(“a=”+a"b="+b);
    }
    }

    当第一重循环开始时 a = 1 进入到循环体 也就是第二重循环里 b=1 符合循环条件然后输出第二重的循环体 a =1 b=1.输出结束后,接着在第二重循环的b++进行自增,然后再在第二重的循环条件判断,为真则继续进行第二重循环体,输出a= 1 b =2 在进行b++自增,b= 3 循环条件失败。接着跳转回第一重循环,a++ 变成a= 2.然后再次重复第二重循环的循环体(注意,再次进入第二重循环体时,变量b会重新进行赋值变成1)

    也就是当进入第二重循环时会将第二重循环一直执行到false,再返回回去自增第二重循环。
    循环执行顺序:初始化变量>>循环条件判断(T就继续F就跳出>>)循环体>>变量更迭>>循环条件判断…

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

    练习一:统计三个班成绩情况,每个班有五名同学,求出各个班的平均分和所有班级的平均分(分数使用键盘输入)并且统计三个班的及格人数

    	/*统计三个班成绩情况,每个班有五名同学,求出各个班的平均分和所有班级的平均分(分数使用键盘输入)
    		并且统计三个班的及格人数*/
    		/*(1)第一步首先化繁为简,先收集统计一个班的数据,
    		1.1 设定一个变量统计班级总分,利用输出语句求出平均分
    		(2)第二步,增加一个外层循环作为班级的数量
    		2.1再设定一个变量用于统计全部班级的总分,然后输出全部班级的平均分
    		(3)第三步,再再设定一个变量,使用if判断多少个及格*/
    		Scanner myScanner = new Scanner(System.in);
    		double allScore =0;
    		int passNum = 0;
    		for(int b = 1;b<=3;b++){
    			double sum = 0;//统计一个的和
    			for (int a = 1;a<=5;a++ ) {
    			System.out.println("请输入第"+b+"个班级的第"+a+"个学生的成绩");
    			double score = myScanner.nextDouble();
    			System.out.println("成绩为"+score);
    			if (score>=60) {//输入的成绩大于或者等于60就进入if语句进行++
    				passNum++;
    			}
    			sum+=score;
    			}
    			allScore+=sum;
    			System.out.println("sum="+sum+"平均分="+sum/5);
    			System.out.println("全年级及格人数为"+passNum+"个");
    		}System.out.println("年级总分为:"+allScore+"年级平均分="+allScore/15);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    繁琐的需求,需要化繁为简,一个需求一个需求的去完成。不可能一步到位

    练习二 打印九九乘法表

    需求分析:需要两个数字相乘,利用嵌套for循环的特性配合输出语句符号 即可完成

    //外层作为第一个乘数,内层作为被乘数
    		for (int a = 1;a<=9 ;a++ ) {
    			for (int b = 1;b<=a;b++) {
    				System.out.print(b+"x"+a+"="+a*b+"\t");
    			}
    			System.out.println();
    		}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意点:第二重循环的的判断条件要使用b<=a,这样才能使打印的效果成阶梯式呈现,b<=a,会在a的范围内b从1自增到与a相等,与99乘法表一致。以此加换行

  • 相关阅读:
    C++封装详细解析+代码演示
    Redis 学习笔记 3:黑马点评
    “五育”并举育人体系构建的实践研究课题实施方案
    数据可视化设计经验分享:10分钟做出炫酷数据大屏
    WPF 中的 ControlTemplate 和 DataTemplate 有什么区别
    1218. 最长定差子序列
    计算机网络:网络层 —— IP数据报的发送和转发过程
    【目标检测】Faster R-CNN论文的讲解
    来了~worthington组织培养术语第二弹!
    【已解决】Linux清空日志文件,再写入日志内容,出现^@字符
  • 原文地址:https://blog.csdn.net/WINorYU/article/details/125601491