嵌套循环介绍
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);
繁琐的需求,需要化繁为简,一个需求一个需求的去完成。不可能一步到位
练习二 打印九九乘法表
需求分析:需要两个数字相乘,利用嵌套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();
}
注意点:第二重循环的的判断条件要使用b<=a,这样才能使打印的效果成阶梯式呈现,b<=a,会在a的范围内b从1自增到与a相等,与99乘法表一致。以此加换行