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