2021-11-17----韩顺平Java入门第十一天

韩顺平Java入门第十一天

1.多重循环控制(难点! 重点!)
    介绍
        1) 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。 【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
        2) 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内 层循环,才可结束外层的当次循环,开始下一次的循环[听不懂,走案例]。
        3) 设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次。

在这里插入图片描述

    多重循环执行步骤分析:
        请分析 下面的多重循环执行步骤, 并写出输出 => 韩老师的内存分析法
//双层 for MulFor.java
for(int i = 0; i < 2; i++) {
     //先思考
    for( int j = 0; j < 3; j++) {
         System.out.println(“i=” + i + j=" + j);
     }
}
在这里插入图片描述
应用示例:

//1) 统计 3 个班成绩情况,每个班有 5 名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]。 、
//2) 统计三个班及格人数,每个班有 5 名同学。
//

import java.util.Scanner; 
public class MulForExercise01 { 
	//编写一个 main 方法 
	public static void main(String[] args) { 
		//统计 3 个班成绩情况,每个班有 5 名同学, 
		//求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入]。 
		//统计三个班及格人数,每个班有 5 名同学。 
		//思路分析:
		//化繁为简 
		//(1) 先计算一个班 , 5 个学生的成绩和平均分 , 使用 for 
			//1.1 创建 Scanner 对象然后,接收用户输入 
			//1.2 得到该班级的平均分 , 定义一个 doubel sum 把该班级 5 个学生的成绩累积 
		//(2) 统计 3 个班(每个班 5 个学生) 平均分 
		//(3) 所有班级的平均分 
			//3.1 定义一个变量,double totalScore 累积所有学生的成绩 
			//3.2 当多重循环结束后,totalScore / (3 * 5) //
		//(4) 统计三个班及格人数 
			//4.1 定义变量 int passNum = 0; 当有一个学生成绩>=60, passNum++ 
			//4.2 如果 >= 60 passNum++ 
		//(5) 可以优化[效率,可读性, 结构] 
		//创建 Scanner 对象 
		Scanner myScanner = 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 = myScanner.nextDouble();
				//当有一个学生成绩>=60, passNum++ 
				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); 
	} 
}
//3) 打印出九九乘法表[课后题]
import java.util.Scanner;
public class MulForExercise02{
	public static void main(String[] args){
		//化繁为简
 
		// for( int i = 1; i <= 9; i++) {
		// 	//i 被乘数 
		// 	//
		// 	for (int j = 1; j <= 9; j++ ) {
		// 		//j乘数
		// 		System.out.println(j+"*"+i+"=" + (j*i));
		// 	}
		// }
		

		//打印格式不对重新编
		
		for (int i = 1;i <= 9 ; i++) {

			for (int j = 1;j <= i ;j++ ) {

				System.out.print(j+"*"+i+"=" + (j*i) +  "\t");
			
			}
			System.out.println(" ");
		}
	}
}

金字塔、空心金字塔

//金字塔
public class Stars{
	public static void main(String[] args){
		
		//int h = 5;
		
		// for (int i = 1;i <= 5 ; i++) {

		// 	for (int k = 1; k<= 5 - i  ; k++) {
		// 	System.out.print(" ");
		// 	}

		// 	for (int j = 1; j <= i -1 + i  ;j++ ) {

		// 	System.out.print("*");

		// 	}
		// 	System.out.println(" ");
			
		// }


		//空心金字塔
		
		for (int i = 1;i <= 4 ; i++) {

			// for (int k = 1; k<= 5 - i  ; k++) {
			// 	System.out.print(" ");
		 // 	}

		 	for (int j = 1; j < i + 5 ;j++ ) {

		 		if (j == 5 + 1 - i || j == 5 + i - 1) { 

		 			System.out.print("*");

		 		}else{

		 			System.out.print(" ");

		 		}	
		 	}
		 	System.out.println(" ");

			if (i == 4) {
			 	for (int k = 1; k<=9 ; k++) {

			 		System.out.print("*");

			    }
			 		
			 }
			
		 }


	}
}

空心菱形

//先死后活
空心菱形
///
import java.util.Scanner;
public class Stars03{
	public static void main(String[] args){
		Scanner myScanner = new Scanner(System.in); 
		//
		//输入层数
		System.out.println("请输入空心菱形层数(层数为奇数)"); 
		int level =  myScanner.nextInt();
		int l = level + 1;
		if (level % 2 == 1 ) {
		//10
		for (int i = 1;i <= l / 2 ; i++) {
		 	for (int j = 1; j < i + l / 2  ;j++ ) {
		 		if (j == l / 2 + 1- i || j == l / 2 - 1 + i ) { 
		 			System.out.print("*");
		 		}else{
		 			System.out.print(" ");
		 		}	
		 	}
		 	System.out.println(" ");	
		}
		for (int m = 1;m <= l / 2 -1 ; m++) {
		 	for (int n = 1; n <= l -1 - m  ; n++ ) {
		 		if (n == m + 1 || n == l- 1 - m ) { //
		 			System.out.print("*");
		 		}else{
		 			System.out.print(" ");
		 		}	
		 	}
		 	System.out.println(" ");	
		}	
		}else{
			System.out.println("提示!请输入空心菱形层数为奇数!"); 
		}
	}
}

    
------文章为自学笔记,学习的课程是B站上的韩顺平30天学JAVA,文章标题的天数是自己学习的天数-----

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值