编程语言
首页 > 编程语言> > Java 嵌套循环的实际应用

Java 嵌套循环的实际应用

作者:互联网

嵌套循环的实际应用

import java.util.Scanner;
// 嵌套循环应用

// 1. 打印出 99 乘法表
// 2. 统计三个班成绩情况,每个班级有 5 人, 求出各个班级的平均分和所有班级的平均分
// 3. 统计三个班级及格人数 每个班有 5 人

public class MulForExercise {
	public static void main (String[] args) {

		// 九九乘法表
		for (int be_mul_num = 1; be_mul_num <= 9; be_mul_num++) {  // 被乘
			for (int mul_num = 1; mul_num <= be_mul_num; mul_num++) {  // 乘数
				System.out.print(mul_num + " X " +  be_mul_num + " = " + (mul_num * be_mul_num) + "\t");
			}
			System.out.println("");
		}


		// 统计三个班成绩情况,每个班级有 5 人, 求出各个班级的平均分和所有班级的平均分, 统计三个班级及格人数

		// 创建 Scanner 对象
		Scanner input = new Scanner(System.in);

		// 创建变量记录所有班级总分
		double class_scoer_sum = 0;

		// 创建变量记录班级个数, 班级学员数量, 及格人数
		byte class_count = 3, stu_count = 5, pass_count = 0;

		// 循环class_count次 分别对应该变量记录的班级数量情况
		for (byte class_num = 1; class_num <= class_count; class_num++) {
			// 创建变量累加当前班级总分数
			double scoer_sum = 0;
			// 循环 stu_count次 分别对于每班该变量记录的学员人数情况
			for (byte stu_num = 1; stu_num <= stu_count; stu_num++) {
				System.out.print(class_num + " 班 " + stu_num + " 号学员成绩: ");
				// 获取学生成绩
				double scoer = input.nextDouble();
				// 判断是否及格(60 分及格)
				if (scoer >= 60.0) {
					pass_count++;
				}
				// 累加到当前班级的分数
				scoer_sum += scoer;
			}
			// 打印当前班级平均分
			System.out.println(class_num + " 班的平均分: " + (scoer_sum / stu_count));
			// 将当前班级总分数累加到所有班级总分里
			class_scoer_sum += scoer_sum;
		}
		// 打印所有班级平均分
		System.out.println(class_count + " 个班级的平均分: " + (class_scoer_sum / (class_count * stu_count)));
		// 打印所有班级共计的及格人数
		System.out.println(class_count + " 个班级共有: " + pass_count + " 人及格");



		// 打印空心金字塔
		// 目标
		System.out.println("    *");	
		System.out.println("   * *");	
		System.out.println("  *   *");	
		System.out.println(" *     *");	
		System.out.println("*********");
        
        /*
        分析思路:
        1. 先打印出 5 行 X 5列 *
        2. 再实现每行依次 1 3 5 7 9 个 *
        3. 再解决每行开头的空格问题
        4. 实现了以上需求 就会得到:
        	|    *
        	|   ***
        	|  *****
        	| *******
        	|*********
        5. 接下来只要加入判断是不是本行第一位 或 最后一位,和首否为末行 如果是 第一位或最后一位 就打印 * 如果非行首行尾末行则打印 空格
        	如果是莫行全部打印 *
        	
        就会得到:
        	|    *
        	|   * *
        	|  *   *
        	| *     *
        	|*********
        */

		int max_line = 5;


		for (int cur_line = 1; cur_line <= max_line; cur_line++) {  // 处理 5 行循环

			for (int start_space = 1; start_space <= (max_line - cur_line); start_space++){  // 处理行首空格
				System.out.print(" ");
			}

			for (int start_star = 1; start_star <= (cur_line * 2 - 1); start_star++) {  // 单独处理每一行的每一位 输出 * 还是 空格
				
				// 如果是最后一行就输出 *
				if (cur_line == max_line) {  
					System.out.print("*");
				} 

				// 如果不是这一行的行首或行尾 就输出空格
				else if (start_star > 1 && start_star < (cur_line * 2 - 1)) {  
					System.out.print(" ");
				} 

				// 如果是行首或行尾输出 *
				else if (start_star == 1 || start_star == (cur_line * 2 - 1)) {  
					System.out.print("*");
				}
			}

			// 一行结束 换行
			System.out.println("");
		}
	}
}

标签:count,班级,Java,System,嵌套循环,应用,println,class,out
来源: https://www.cnblogs.com/jwyqn/p/16154914.html