什么是二重循环?
语法
一个循环体内又包含另一个完整的循环结构
while(循环条件1) { //外层循环 do {
//循环操作1 //循环操作1
while(循环条件2) { //内层循环 do {
//循环操作2 //循环操作2
} }while(循环条件1);
} }while(循环条件2);
for(循环条件1) { while(循环条件1) {
//循环操作1 //循环操作1
for(循环条件2) { for(循环条件2) {
//循环操作2 //循环操作2
} }
} }
外层循环变量变化一次,内层循环变量要变化一遍
示例1:
for(int i = 0; i <classNum; i++){
sum = 0.0;
System.out.println("请输入第" + (i+1) + "个班级的成绩");
for(int j = 0; j < score.length; j++){
System.out.print("第" + (j+1) + "个学员的成绩:");
score[j] = input.nextInt();
sum = sum + score[j];
}
aver [i] = sum / score.length; //计算平均分
System.out.println("第"+(i+1)+"个班级平均分" + aver [i] + "
");
}
示例2:
public class Rectangle {
public static void main(String[] args) {
System.out.println("打印矩形");
for(int i = 1; i <= 5; i++){ //打印第i行
for(int j = 1; j <= 5; j++){ //打印5个*号
System.out.print("*");
}
System.out.print("
"); //换行
}
}
}
二重循环中使用continue
问题:若有3个班级各4名学员参赛,计算每个班级参赛学员平均分,统计成绩大于85分学员数
示例:
for(int i = 0; i < classnum; i++){
//…
for(int j = 0; j < score.length; j++){
//…
if(score[j] < 85) {
continue;
}
count++;
}
//…
}
执行continue,进入本层循环的下一轮循环,不再执行count++
内循环中的break可以终止二重循环的执行吗?
问题:有5家衣服专卖店,每家最多购买3件。用户可以选择离开,可以买衣服最后打印总共买了几件衣服
示例:
for(int i = 0; i < 5; i++){
System.out.println("欢迎光临第" + (i+1) + "家专卖店");
for(int j = 0; j < 3; j++){
System.out.println("要离开吗(y/n)?");
choice = input.nextLine();
if("y".equals(choice)){
break;
}
System.out.println("买了一件衣服");
count++; //计数器加1
}
//……
}
二重循环中continue和break对比
for(…){
for(…) {
//……
continue;
//……
}
//……
}
继续本层下一轮循环 --- continue
for(…){
for(…) {
//……
break;
//……
}
//……
}
跳出本层循环 --- break
总结:
二重循环是一个循环体内又包含另一个完整的循环结构
在二重循环中,外层循环变量变化一次,内层循环变量要从初始值到结束值变化一遍
在二重循环中可以使用break、continue语句控制程序的执行
break:跳出本层循环
continue:继续本层的下一轮循环