一、本章目标
掌握二重循环的使用
掌握二重循环中跳转语句的使用
二、知识点
1 二重循环
1.1 回顾循环
问题:某次程序大赛,S1班有4名学员参加,学员的成绩由用户输入,计算该班参赛学员的平均分
实现:
/**
* 计算一个班的平均分
*/
public class AvgScore {
public static void main(String args[]){
int[] score = new int[4]; //成绩数组
float sum = 0.0f; //成绩总和
float average = 0.0f; //成绩平均值
//循环输入学员成绩
Scanner input = new Scanner(System.in);
System.out.println("请输入4位学员的成绩");
for(int i = 0; i < score.length; i++){
System.out.print("第"+ (i+1) +"位学员的成绩:");
score[i] = input.nextInt();
sum = sum + score[i]; //成绩累加
}
average = sum / score.length; //计算平均值
System.out.println("参赛学员的平均分是:" + average);
}
}
1.2 为什么使用二重循环
问题:若有3个班级各4名学员参赛,如何计算每个班级参赛学员的平均分?
分析:
使用二循环
外层循环控制班级数目,内层循环控制每个班级学员数目
1.3 什么是二循环
一个循环体内又包含另一个完整的循环结构
特点:外层循环变量变化一次,内层循环变量要变化一遍
1.4 使用二重循环
解决上面的问题
/**
* 计算3个班级的平均分
*/
public class AvgScore {
public static void main(String args[]){
int[] score = new int[4]; //成绩数组
int classNum = 3; //班级数目
double sum = 0.0; //成绩总和
double average = 0.0; //平均成绩
//循环输入学员成绩
Scanner input = new Scanner(System.in);
for(int i = 0; i < classNum; i++){
sum = 0.0f; //成绩总和归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]; //成绩累加
}
average = sum / score.length; //计算平均分
System.out.println("第" + (i+1) + "个班级参赛学员的平均分是:" + average + "\n");
}
}
}
![261134174046007.png](https://images0.cnblogs.com/blog/773205/201507/261134174046007.png)
分析:
用二重循环实现
外层循环控制行数
内层循环控制每行的*号数
实现
/**
* 打印矩形
*/
public class Rectangle {
public static void main(String[] args) {
System.out.println("打印矩形");
for(int i = 0; i < 5; i++){
for(int j = 0; j <5; j++){
System.out.print("*");
}
System.out.print("\n"); //换行
}
}
}
1.5 技能训练
训练1:打印直角三角形
问题:打印直角三角形
从控制台输入直角三角形的高度(行数)
每行 * 的数目依次为1、3、5、7…
![261134211546862.png](https://images0.cnblogs.com/blog/773205/201507/261134211546862.png)
分析:
1.外层循环控制行数
2.分析每行打印的内容
3.每一行打印字符*结束后要换行
4.内层循环的条件: j<=2i-1
实现
/**
* 输入行数打印直角三角形
*/
public class RTriAngle {
public static void main(String[] args) {
int rows = 0; //三角形行数
System.out.print("请输入直角三角形的行数:");
Scanner