m
次,内层为 n
次,则内层循环体实际上需要执行 m*n
次
for(int i = 0; i < 2; i++) {
for( int j = 0; j < 3; j++) {
System.out.println("i=" + i + "j=" + j);
}
}
MulForExercise01.java
(1) 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]。
for
1.1 创建 Scanner
对象然后,接收用户输入
1.2 得到该班级的平均分 , 定义一个 doubel sum
把该班级5个学生的成绩累积 Scanner sc = new Scanner(System.in);
double sum = 0; //一个班的总成绩
for (int j = 1;j <= 5;j++){
System.out.println("请输入第一个班的第" + j + "个学生的成绩:");
double score = sc.nextDouble();
sum += score; //累积
System.out.println("成绩为:"+score);
}
//因为 sum 是5个学生的总成绩
System.out.println("sum="+sum+"平均分="+(sum /5 ));
(2) 统计3个班(每个班5个学生) 平均分,在外层加个 for 循环 i,因为是每个班,都要计算一个班的学生总成绩和平均分,所以再外层嵌套一层 for 循环 3,最后在把输入的第几个班改为 第 i 个班即可
Scanner sc = new Scanner(System.in);
for (int i = 1;i <= 3;i++) { //i表示班级
double sum = 0; //一个班的总成绩
for (int j = 1; j <= 5; j++) { //j表示学生
System.out.println("请输入第"+i+"个班的第" + j + "个学生的成绩:");
double score = sc.nextDouble();
sum += score; //累积
System.out.println("成绩为:" + score);
}
//因为 sum 是5个学生的总成绩
System.out.println("sum=" + sum + "平均分=" + (sum / 5));
}
(3) 所有班级的平均分
3.1 定义一个变量,`double totalScore` 累积所有学生的成绩
3.2 当多重循环结束后,`totalScore / (3 * 5)`
Scanner sc = new Scanner(System.in);
double totalScore = 0;//累积所有学生的总成绩
for (int i = 1;i <= 3;i++) { //i表示班级
double sum = 0; //一个班的总成绩
for (int j = 1; j <= 5; j++) { //j表示学生
System.out.println("请输入第"+i+"个班的第" + j + "个学生的成绩:");
double score = sc.nextDouble();
sum += score; //累积
System.out.println("成绩为:" + score);
}
//因为 sum 是5个学生的总成绩
System.out.println("sum=" + sum + "平均分=" + (sum / 5));
//把 sum 累积到 totalScore
totalScore += sum;
}
System.out.println("三个班总分"+totalScore+"平均分="+totalScore / 15);
(4) 统计三个班及格人数
4.1 定义变量 int passNum = 0; 当有一个学生成绩>=60, passNum++
4.2 如果 >= 60 passNum++
Scanner sc = new Scanner(System.in);
double totalScore = 0;//累积所有学生的总成绩
int passNum = 0; //累积 及格人数
for (int i = 1;i <= 3;i++) { //i表示班级
double sum = 0; //一个班的总成绩
for (int j = 1; j <= 5; j++) { //j表示学生
System.out.println("请输入第"+i+"个班的第" + j + "个学生的成绩:");
double score = sc.nextDouble();
if (score >= 60){
passNum++;
}
sum += score; //累积
System.out.println("成绩为:" + score);
}
//因为 sum 是5个学生的总成绩
System.out.println("sum=" + sum + "平均分=" + (sum / 5));
//把 sum 累积到 totalScore
totalScore += sum;
}
System.out.println("三个班总分"+totalScore+"平均分="+totalScore / 15);
System.out.println("及格人数="+passNum);
(5) 可以优化[效率,可读性, 结构],班级人数和学生人数分别使用变量来替换
Scanner sc = new Scanner(System.in);
double totalScore = 0;//累积所有学生的总成绩
int passNum = 0; //累积 及格人数
int classNum = 3; //班级个数
int stuNum = 5; //学生个数
for (int i = 1;i <= classNum;i++) { //i表示班级
double sum = 0; //一个班的总成绩
for (int j = 1; j <= stuNum; j++) { //j表示学生
System.out.println("请输入第"+i+"个班的第" + j + "个学生的成绩:");
double score = sc.nextDouble();
if (score >= 60){
passNum++;
}
sum += score; //累积
System.out.println("成绩为:" + score);
}
//因为 sum 是5个学生的总成绩
System.out.println("sum=" + sum + "平均分=" + (sum / stuNum));
//把 sum 累积到 totalScore
totalScore += sum;
}
System.out.println("三个班总分"+totalScore+"平均分="+totalScore / classNum*stuNum);
System.out.println("及格人数="+passNum);
(2) 统计三个班及格人数,每个班有 5 名同学。
(3) 打印出九九乘法表
for (int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
// "\t"这是JAVA语言默认的制表符号,使用此符号,打印出的乘法表格较为美观
System.out.print(" " + i + "*" + j + "=" + (i * j)+"\t");
if(i == j){
System.out.print("\n");//当换行条件成立时,进行换行打印
}
}
化繁为简,先死后活
]
*****
*****
*****
*****
*****
for (int i = 1; i <= 5; i++) {
System.out.println("*****");
}
* //第1层 有 1个*
** //第2层 有 2个*
*** //第3层 有 3个*
**** //第4层 有 4个*
***** //第5层 有 5个*
for (int i = 1; i <= 5; i++) { // i 表示层数
// 控制打印每层的 * 个数
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
// 每打印完一层 * 后,就换行
System.out.println("");
}
2 * 层数-1
* //第1层 有 1个* 2 * 1 -1 有4=(总层数-1)个空格
*** //第2层 有 3个* 2 * 2 -1 有3=(总层数-2)个空格
***** //第3层 有 5个* 2 * 3 -1 有2=(总层数-3)个空格
******* //第4层 有 7个* 2 * 4 -1 有1=(总层数-4)个空格
********* //第5层 有 9个* 2 * 5 -1 有0=(总层数-5)个空格
for (int i = 1; i <= 5; i++) { // i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for (int k = 1; k <= 5-i; k++){
System.out.print(" ");
}
// 控制打印每层的 * 个数
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
// 每打印完一层 * 后,就换行
System.out.println("");
}
* //第1层 有 1个* 当前行的第一个位置是*,最后一个位置也是*
* * //第2层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
* * //第3层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
* * //第4层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
********* //第5层 有 9个* 全部输出*
for (int i = 1; i <= 5; i++) { // i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for (int k = 1; k <= 5-i; k++){
System.out.print(" ");
}
// 控制打印每层的 * 个数
for (int j = 1; j <= 2 * i - 1; j++) {
//当前行的第一个位置是*,最后一个位置也是*,最后一层全部输出 *
if (j == 1 || j == 2 * i - 1 || i == 5){
System.out.print("*");
}else { //其他情况输出 空格
System.out.print(" ");
}
}
// 每打印完一层 * 后,就换行
System.out.println("");
}
int totalLevel = 5;
int totalLeavel = 10;
for (int i = 1; i <= totalLeavel; i++) { // i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for (int k = 1; k <= totalLeavel-i; k++){
System.out.print(" ");
}
// 控制打印每层的 * 个数
for (int j = 1; j <= 2 * i - 1; j++) {
//当前行的第一个位置是*,最后一个位置也是*,最后一层全部输出 *
if (j == 1 || j == 2 * i - 1 || i == totalLeavel){
System.out.print("*");
}else { //其他情况输出 空格
System.out.print(" ");
}
}
// 每打印完一层 * 后,就换行
System.out.println("");
}
}