Day_03 讲解一个完整的项目是如何实现的(二)

八.循环结构

循环: 重复执行某一项操作。
for循环
在这里插入图片描述
在这里插入图片描述

 public static void main(String[] args) {
        // 简化
        // 1. 确定重复的次数 5次
        // 三要素:确定循环的次数
        //   初值;       终止值(条件);循环变量变化的值
    /*  for(int i = 1; i <= 5; i ++) {
            System.out.println("我要学习大数据");
        }*/
        // 死循环
    /*  for(; ; ) {
            System.out.println("我要学习大数据");
        }*/
        // 2. 输出 1,2,3,4,5 在控制台
    /*  for(int i = 1; i <= 5; i ++) {// 1,2,3,4,5
            System.out.println(i);// 变量
        }*/
        // 3. 计算 1 + 2 + 3 + 4 + 5 的和
        int sum = 0;
        for(int i = 1; i <= 5; i ++) {
            sum = sum + i;
        }
        System.out.println(sum);
    }

九.项目一循环实现

9.1 流程分析

在这里插入图片描述

十、项目二需求分析

在这里插入图片描述

十一、数组

11.1. 什么是数组

在这里插入图片描述
数组:是一个容器,是一组连续的空间,用来存储相同数据类型的一组数。
在这里插入图片描述

11.2.数组基本语法

   public static void main(String[] args) {
/*      int n;
        n = 5;// 初始化:开辟空间赋初始值
        n = 6;
        int n1 = 5;
        System.out.println(n);// 6
*/
        //------------数组----------------------
        // 语法:
        // 定义一个数组
        // 1.声明一个数组 [] :数组类型
//      int [] arr;
        // 2. 初始化   3:数组的大小,长度
//      arr = new int[3];
        // 使用一行代码:
        int [] arr = new int[3];
        // 使用
        System.out.println(arr[0] + "交水费");
        System.out.println(arr[1] + "交电费");
        System.out.println(arr[2] + "交物业费");
    }

11.3.数组默认值:

int [] ,doube[] , boolean [] , String []

public static void main(String[] args) {
        // int [] arr = new int[3];
        // double: 默认值:0.0--------------------
        // double :存储的元素的类型,数据的类型 
        double [] arr1 = new double[3];
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        // boolean: 默认值:false--------------------
        boolean [] arr2 = new boolean[2];
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);
        // String : 默认值是 null (空数据类型的值)
        String [] arr3 = new String[2];
        System.out.println(arr3[0]);
        System.out.println(arr3[1]);
    }

11.4 数组基本for遍历

public static void main(String[] args) {
        int [] arr = new int[3];
        // 修改元素的值
        arr[0] = 5;
        arr[1] = 6;
        arr[2] = 7;
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        //----------------------------------------
        System.out.println("-----------------------");
        // 给每一个元素值 + 2
//      arr[0] = arr[0] + 2;// 5 + 2 -》 7
//      arr[1] = arr[1] + 2;// 6 + 2 
//      arr[2] = arr[2] + 2;// 7 + 2
        // 循环简化:
        //                      i < 3
        for(int i = 0; i < arr.length; i ++) {// i= 0,1,2
            arr[i] = arr[i] + 2;//变量:0,1,2 
        }
        // 遍历数组元素
//      System.out.println(arr[0]);
//      System.out.println(arr[1]);
//      System.out.println(arr[2]);// 
        // 循环简化
        for(int i = 0; i < arr.length; i ++) {// i = 0 , 1, 2
            System.out.println(arr[i]);
        }
    }

数组练习:

在这里插入图片描述

public class Demo6 {
    public static void main(String[] args) {
        // 1. 声明数组 存数据
        String [] name = new String[4];// null,null,null,null
        String [] sex = new String[4];// null,null,null,null
        int [] score = new int[4];//0,0,0,0
        // 2. 对数据处理
        // 数据有了
        name[0] = "郭靖";
        name[1] = "杨康";
        name[2] = "黄蓉";
        name[3] = "穆念慈";
        sex[0] = "男";
        sex[1] = "男";
        sex[2] = "女";
        sex[3] = "女";
        
        score[0] = 90;
        score[1] = 80;
        score[2] = 100;
        score[3] = 90;
        
        int guojing = 0;// 计数:男
        int sum1 = 0;// 男
        int huangrong = 0;// 计数:女
        int sum2 = 0;// 女
        // 处理:性别的不同 统计人数 和 总成绩
        //                 i<= 3   0,1,2,3
        for(int i = 0; i <= sex.length-1;i++) {
            if(sex[i].equals("男") ) {// 相等 true,不相等false
                // 计数
                guojing ++;//guojing = guojing + 1;
                // 累加总成绩
                sum1 = sum1 + score[i];
            }else if(sex[i].equals("女")) {
                huangrong ++;
                sum2 = sum2 + score[i];
            }
        }
        // 3. 展示结果
        System.out.println("男生的平均成绩:" + sum1/guojing);
        System.out.println("女生的平均成绩:" + sum2/huangrong);
    }
}

这个感觉不过瘾,自己把需求改成键盘录入了

package Day_1223;

import java.util.Scanner;

/*
 	改:键盘录入,定义数组存储学员信息,计算男,女生的平均成绩
 	
 	分析:
 		1.导包
 		2.创建Scanner对象
 		3.明确学员人数
 		4.创建对应数组(name,age,score)
 		5.提示用户键盘录入,因为是多名,所以使用for循环
 		6.要想求出平均成绩,需要对数组进行遍历
 		7.条件判断男.女
 		8.使用赋值运算统计各自的和,还有对应人数
 		9.输出结果
 */
//		1.导包
public class XueYuanXinXi {

	public static void main(String[] args) {
		// 2.创建Scanner对象
		Scanner sc = new Scanner(System.in);

		// 3.明确学员人数
		System.out.println("请问您要录入几名同学:");
		int num = sc.nextInt();
		// 4.创建对应数组(name,age,score)
		String[] name = new String[num];
		String[] sex = new String[num];
		int[] score = new int[num];
		// 5.提示用户键盘录入,因为是多名,所以使用for循环
		for (int i = 0; i < num; i++) {
			System.out.println("请输入第" + (i + 1) + "名同学的姓名:");
			name[i] = sc.next();
			System.out.println("请输入第" + (i + 1) + "名同学的姓别:");
			sex[i] = sc.next();
			System.out.println("请输入第" + (i + 1) + "名同学的成绩:");
			score[i] = sc.nextInt();
		}
		// 6.要想求出平均成绩,需要对数组进行遍历
		int sum1 = 0;
		int sum2 = 0;
		int count1 = 0;
		int count2 = 0;
		System.out.println("================学员信息================");
		System.out.print("姓名\t");
		for(int i = 0; i < num; i++){
			System.out.print(name[i] + "\t");
		}
		System.out.println();
	
		System.out.print("性别\t");
		for(int i = 0; i < num; i++){
			System.out.print(sex[i] + "\t");
		}
		
		System.out.println();
		System.out.print("成绩\t");
		for(int i = 0; i < num; i++){
			System.out.print(score[i] + "\t");
		}
		System.out.println();
		
		for(int i = 0; i < num; i++){
	
			// 7.条件判断男.女
			if(sex[i].equals("男")){
				// 8.使用赋值运算统计各自的和,还有对应人数
				sum1 += score[i];
				count1 ++;
			}else if(sex[i].equals("女")){
				sum2 += score[i];
				count2 ++;
			}
		}
		
		// 9.输出结果
		System.out.println("男生有:" + count1 + "个");
		System.out.println("平均成绩为:" + sum1/count1 + "分");
		System.out.println("女生有:" + count2 + "个");
		System.out.println("平均成绩为:" + sum2/count2 + "分");

	}

}

界面效果展示:

在这里插入图片描述

十二、项目二数组实现

12.1 流程分析:数组信息统计

在这里插入图片描述

12.2 数组项目实现

package jfreechartexam;

import java.util.Scanner;

import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

import jfreechartarrdata.DataManager;

public class JFreeChartExamZ extends ApplicationFrame {

	public JFreeChartExamZ(String title) {
		super(title);

	}

	public static void main(String[] args) {
		// 1.显示所有学员信息
		DataManager.showData();
		// 声明变量,获得数据==============================
		Scanner sc = new Scanner(System.in);

		// 获得数据集合
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();

		String[] xueLi = DataManager.getEduArray();// 学历数组
		String[] gongZi = DataManager.getSalaryArray();// 薪资数组
		String[] xingBie = DataManager.getSexArray();// 年龄数组
		String[] zhuanYe = DataManager.getComputerArray();// 计算机专业数组
		String[] biYe = DataManager.getYearArray();// 毕业年限数组
		String[] nianLing = DataManager.getAgeArray();// 年龄数组
		String[] chengShi = DataManager.getCityArray();// 城市数组
		// ===========================================
		// 创建循环,实现对系统的重复使用
		while (true) {

			// 编写主界面
			System.out.println("=====薪资查询系统=====");
			System.out.println("1. 查询学历的就业趋势");
			System.out.println("2. 查询性别的就业趋势");
			System.out.println("3. 查询是否是计算机专业");
			System.out.println("4. 查询毕业年限的就业趋势");
			System.out.println("5. 查询年龄的就业趋势");
			System.out.println("6. 查询城市的就业趋势");
			System.out.println("7. 退出程序\n");

			// 提示用户选择
			System.out.print("请选择您要查询的内容:");
			int xiang = sc.nextInt();

			// 对比用户的选项,判断相应的内容
			if (xiang > 7 || xiang < 1) {
				System.out.println("您查询的项目不存在!\n");
			} else if (xiang == 1) {
				/*
				 * 1.查询学历的就业趋势 分析:要想知道学历对就业的影响,首先要知道不同学历的平均薪资 1.获得保存所有人的学历的数组
				 * 2.获得保存所有人薪资的数组 3.定义一个变量 接收不同学历人数 4.定义一个变量 接收不同学历薪资和
				 * 5.遍历数组,输出所有学历和对应的薪资 6.拿各自学历的薪水和,除以人数,得到平均薪资 7.调用图表,输出结果
				 */

				// 1.3 定义一个变量 接收不同学历人数
				int count1, count2, count3, count4;
				count1 = count2 = count3 = count4 = 0;

				// 1.4 定义一个变量 接收不同学历薪资和
				int sum1, sum2, sum3, sum4;
				sum1 = sum2 = sum3 = sum4 = 0;

				// 1.5 遍历数组,输出所有学历和对应的薪资
				for (int i = 0; i < xueLi.length; i++) {
					if (xueLi[i] == null) {
						break;
					}
					// 把String类型的工资数组转换成int
					int gongZi2 = Integer.parseInt(gongZi[i]);
					if (xueLi[i].equals("大专")) {
						count1++;
						sum1 += gongZi2;
					} else if (xueLi[i].equals("本科")) {
						count2++;
						sum2 += gongZi2;
					} else if (xueLi[i].equals("硕士")) {
						count3++;
						sum3 += gongZi2;
					} else if (xueLi[i].equals("博士")) {
						count4++;
						sum4 += gongZi2;
					}
				}

				// 判断,当人数为零时不加载
				// 1.6 拿各自学历的薪水和,除以人数,得到平均薪资
				if (count1 != 0) {
					dataset.addValue(sum1 / count1, "大专", "大专(" + count1 + "人)");
				}
				if (count2 != 0) {
					dataset.addValue(sum2 / count2, "本科", "本科(" + count2 + "人)");
				}
				if (count3 != 0) {
					dataset.addValue(sum3 / count3, "硕士", "硕士(" + count3 + "人)");
				}
				if (count4 != 0) {
					dataset.addValue(sum4 / count4, "博士", "博士(" + count4 + "人)");
				}
				DataManager.showView(dataset);// 7.调用图表,输出结果
				System.out.println();

			} else if (xiang == 2) {
				/*
				 * 2. 查询性别的就业趋势 分析:要想知道性别对就业的影响,首先要知道不同性别的平均薪资 1.获得保存所有人的性别的数组
				 * 2.获得保存所有人薪资的数组 3.定义一个变量 接收不同性别的人数 4.定义一个变量 接收不同性别的薪资和
				 * 5.遍历数组,输出所有性别和对应的薪资 6.拿各自性别的薪水和,除以人数,得到平均薪资 7.调用图表,输出结果
				 */
				// 2.3 定义一个变量 接收不同性别的人数
				int count1, count2;
				count1 = count2 = 0;

				// 2.4 定义一个变量 接收不同性别的薪资和
				int sum1, sum2;
				sum1 = sum2 = 0;

				// 2.5 遍历数组,输出所有性别和对应的薪资
				for (int j = 0; j < xingBie.length; j++) {
					if (xingBie[j] == null) {
						break;
					}
					int gongZi2 = Integer.parseInt(gongZi[j]);
					if (xingBie[j].equals("男")) {
						count1++;
						sum1 += gongZi2;
					} else if (xingBie[j].equals("女")) {
						count2++;
						sum2 += gongZi2;
					}
				}
				// 2.6 拿各自性别的薪水和,除以人数,得到平均薪资
				if (count1 != 0) {
					dataset.addValue(sum1 / count1, "男", "男(" + count1 + "个)");
				}
				if (count2 != 0) {
					dataset.addValue(sum2 / count2, "女", "女(" + count2 + "个)");
				}
				DataManager.showView(dataset);
				System.out.println();

			} else if (xiang == 3) {
				// 3. 查询是否是计算机专业
				int count1, count2;
				count1 = count2 = 0;

				// 3.4 定义一个变量 接收不同性别的薪资和
				int sum1, sum2;
				sum1 = sum2 = 0;

				// 3.5 遍历数组,输出所有性别和对应的薪资
				for (int j = 0; j < zhuanYe.length; j++) {
					if (zhuanYe[j] == null) {
						break;
					}
					int gongZi2 = Integer.parseInt(gongZi[j]);
					if (zhuanYe[j].equals("是")) {
						count1++;
						sum1 += gongZi2;
					} else if (zhuanYe[j].equals("否")) {
						count2++;
						sum2 += gongZi2;
					}
				}
				// 3.6 拿各自性别的薪水和,除以人数,得到平均薪资
				if (count1 != 0) {
					dataset.addValue(sum1 / count1, "是", "是(" + count1 + "个)");
				}
				if (count2 != 0) {
					dataset.addValue(sum2 / count2, "否", "否(" + count2 + "个)");
				}
				DataManager.showView(dataset);
				System.out.println();
			} else if (xiang == 4) {
				// 4. 查询毕业年限的就业趋势毕业年限:小于0,等于0,1-5年,6-10年,11-15年,15年以上
				int count1, count2, count3, count4, count5, count6, count7;
				count1 = count2 = count3 = count4 = count5 = count6 = count7 = 0;

				int sum1, sum2, sum3, sum4, sum5, sum6, sum7;
				sum1 = sum2 = sum3 = sum4 = sum5 = sum6 = sum7 = 0;

				for (int i = 0; i < biYe.length; i++) {
					if (biYe[i] == null) {
						break;
					}

					int biYe2 = Integer.parseInt(biYe[i]);
					int gongZi2 = Integer.parseInt(gongZi[i]);

					if (biYe2 < 0) {
						count1++;
						sum1 += gongZi2;
					} else if (biYe2 == 0) {
						count2++;
						sum2 += gongZi2;
					} else if (biYe2 >= 1 & biYe2 <= 5) {
						count3++;
						sum3 += gongZi2;
					} else if (biYe2 <= 10) {
						count4++;
						sum4 += gongZi2;
					} else if (biYe2 <= 15) {
						count5++;
						sum5 += gongZi2;
					} else if (biYe2 > 15) {
						count6++;
						sum6 += gongZi2;
					}
				}

				if (count1 != 0) {
					dataset.addValue(sum1 / count1, "未毕业", "未毕业(" + count1 + "个)");
				}
				if (count2 != 0) {
					dataset.addValue(sum2 / count2, "应届毕业", "应届毕业(" + count2 + "个)");
				}
				if (count3 != 0) {
					dataset.addValue(sum3 / count3, "1 - 5年", "1 - 5年(" + count3 + "个)");
				}
				if (count4 != 0) {
					dataset.addValue(sum4 / count4, "6 - 10年", "6 - 10年(" + count4 + ")个");
				}
				if (count5 != 0) {
					dataset.addValue(sum5 / count5, "11 - 15年", "11 - 15年(" + count5 + ")个");
				}
				if (count6 != 0) {
					dataset.addValue(sum6 / count6, "大于 15年", "大于 15年(" + count6 + ")个");
				}

				DataManager.showView(dataset);
				System.out.println();
			} else if (xiang == 5) {
				// 5. 查询年龄的就业趋势,20-25,26-30,30-35,36-40
				int count1, count2, count3, count4;
				count1 = count2 = count3 = count4 = 0;

				int sum1, sum2, sum3, sum4;
				sum1 = sum2 = sum3 = sum4 = 0;

				for (int i = 0; i < nianLing.length; i++) {
					if (nianLing[i] == null) {
						break;
					}

					int nianLing2 = Integer.parseInt(nianLing[i]);
					int gongZi2 = Integer.parseInt(gongZi[i]);

					if (nianLing2 >= 20 & nianLing2 <= 25) {
						count1++;
						sum1 += gongZi2;
					} else if (nianLing2 <= 30) {
						count2++;
						sum2 += gongZi2;
					} else if (nianLing2 <= 35) {
						count3++;
						sum3 += gongZi2;
					} else if (nianLing2 <= 40) {
						count4++;
						sum4 += gongZi2;
					}

					if (count1 != 0) {
						dataset.addValue(sum1 / count1, "20 - 25", "20 - 25(" + count1 + "个)");
					}
					if (count2 != 0) {
						dataset.addValue(sum2 / count2, "26 - 30", "26 - 30(" + count2 + "个)");
					}
					if (count3 != 0) {
						dataset.addValue(sum3 / count3, "31 - 35", "31 - 35(" + count3 + "个)");
					}
					if (count4 != 0) {
						dataset.addValue(sum4 / count4, "36 - 40", "36 - 40(" + count4 + "个)");
					}
					DataManager.showView(dataset);
					System.out.println();
				}
			} else if (xiang == 6) {
				// 6. 查询城市的就业趋势(北京,成都,广州,杭州,南京,上海,深圳,苏州,西安,其他。)
				int count1, count2, count3, count4, count5, count6, count7, count8, count9, count10;
				count1 = count2 = count3 = count4 = count5 = count6 = count7 = count8 = count9 = count10 = 0;

				int sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8, sum9, sum10;
				sum1 = sum2 = sum3 = sum4 = sum5 = sum6 = sum7 = sum8 = sum9 = sum10 = 0;

				for (int i = 0; i < chengShi.length; i++) {
					if (chengShi[i] == null) {
						break;
					}

					int gongZi2 = Integer.parseInt(gongZi[i]);

					if (chengShi[i].equals("北京")) {
						count1++;
						sum1 += gongZi2;
					} else if (chengShi[i].equals("成都")) {
						count2++;
						sum2 += gongZi2;
					} else if (chengShi[i].equals("广州")) {
						count3++;
						sum3 += gongZi2;
					} else if (chengShi[i].equals("杭州")) {
						count4++;
						sum4 += gongZi2;
					} else if (chengShi[i].equals("南京")) {
						count5++;
						sum5 += gongZi2;
					} else if (chengShi[i].equals("上海")) {
						count6++;
						sum6 += gongZi2;
					} else if (chengShi[i].equals("深圳")) {
						count7++;
						sum7 += gongZi2;
					} else if (chengShi[i].equals("苏州")) {
						count8++;
						sum8 += gongZi2;
					} else if (chengShi[i].equals("西安")) {
						count9++;
						sum9 += gongZi2;
					} else {
						count10++;
						sum10 += gongZi2;
					}
				}

				if (count1 != 0) {
					dataset.addValue(sum1 / count1, "北京", "北京(" + count1 + "人)");
				}
				if (count2 != 0) {
					dataset.addValue(sum2 / count2, "成都", "成都(" + count2 + "人)");
				}
				if (count3 != 0) {
					dataset.addValue(sum3 / count3, "广州", "广州(" + count3 + "人)");
				}
				if (count4 != 0) {
					dataset.addValue(sum4 / count4, "杭州", "杭州(" + count4 + "人)");
				}
				if (count5 != 0) {
					dataset.addValue(sum5 / count5, "南京", "南京(" + count5 + "人)");
				}
				if (count6 != 0) {
					dataset.addValue(sum6 / count6, "上海", "上海(" + count6 + "人)");
				}
				if (count7 != 0) {
					dataset.addValue(sum7 / count7, "深圳", "深圳(" + count7 + "人)");
				}
				if (count8 != 0) {
					dataset.addValue(sum8 / count8, "苏州", "苏州(" + count8 + "人)");
				}
				if (count9 != 0) {
					dataset.addValue(sum9 / count9, "西安", "西安(" + count9 + "人)");
				}
				if (count10 != 0) {
					dataset.addValue(sum10 / count10, "其他", +count10 + "人)");
				}
				DataManager.showView(dataset);
				System.out.println();
			} else if (xiang == 7) {
				System.out.println("欢迎下次使用,再见!");
				System.exit(0);
			}
		}
	}
}

心得体会:

  今天,在老师的带领下,我们完整的把这个项目从开始到实现体验了一遍,其中有很多知识点都是懵懵懂懂,不过不要紧,毕竟还没有正式开课.最后的代码也全部都是自己一个人敲的.第一次敲将近三百行的代码,做为小白,心里还有点小激动,特别是看到了最后功能实现了,极大的增强了自己的信心.
  但是过程中还是困难重重,完全不会的状态下去实现这个功能,脑子里基本没什么逻辑.不过最后大家全都完成了,这一点还是很厉害的.
  项目体验完了,再接下来就是要从头开始,一点一点的讲了,有了前期的体验,相信作为小白的大家在学习的时候不会完全没有概念了.

    加 油 !

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值