学习java数组的练习代码

跟着视频做一个数组知识的小案例,最开始想自己写来着,突然一懵,犹如老虎吃天——无处下爪。。。。无奈,还是看了视频里面的,突然就觉着熟悉了,也不用跟着视频做了,真爽,只是功能是完成了,bug多多!先不管啦,至少实现了某些功能,有一起学习的可以互相交流。
话不多说,做的案例是一个录入学生信息和分数并实现排序的小案例,虽然小,知识点却不少,细节点也不少,不一一缀述,请看:
1、先定义一个学生类(这没啥说的,该有的属性必须有,get、set方法搞起来,重写toString方法):

package stuManagement;

public class StuInfo {
	private int num;	//	编号
	private String stuName;	//	姓名
	private int age;	//	年龄
	private int java;	//	java成绩
	private int c_shap;	//	c#成绩
	private int html;	//	html成绩
	private int sql;	//	sql成绩
	private int sum;	//	总分
	private int avg;	//	平均分
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getJava() {
		return java;
	}
	public void setJava(int java) {
		this.java = java;
	}
	public int getC_shap() {
		return c_shap;
	}
	public void setC_shap(int c_shap) {
		this.c_shap = c_shap;
	}
	public int getHtml() {
		return html;
	}
	public void setHtml(int html) {
		this.html = html;
	}
	public int getSql() {
		return sql;
	}
	public void setSql(int sql) {
		this.sql = sql;
	}
	public int getSum() {
		return sum;
	}
	public void setSum() {
		this.sum = java+c_shap+html+sql;
	}
	public int getAvg() {
		return avg;
	}
	public void setAvg() {
		this.avg = sum/4;
	}
	@Override
	public String toString() {
		String msg="\t"+num+"\t"+stuName+"\t"+age+"\t"+java+"\t"+c_shap+"\t"+html+"\t"+sql+"\t"+sum+"\t"+avg;
		/*
		 * 这是eclipse自动生成的toString方法,可惜用不成,非得自个写
		 * return "StuInfo [num=" + num + ", stuName=" + stuName + ", age=" + age +
		 * ", java=" + java + ", c_shap=" + c_shap + ", html=" + html + ", sql=" + sql +
		 * ", sum=" + sum + ", avg=" + avg + "]";
		 */
		return msg;
	}
}

2、写执行类(所有的功能方法都在此处调用,不用所有代码挤在一起,整洁大方,小葱豆腐,非黑即白…不知道在说啥了):

package stuManagement;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请定义学生人数:");
		StuInfo[] stuArr = new StuInfo[sc.nextInt()]; // 学生对象数组
		Function excute = new Function();
		boolean flag = true;
		
		while (flag) { // 每次执行一个功能完成后,继续弹出询问用户操作
			System.out.println("--你要执行的功能--");
			System.out.println("10:添加一个学生");
			System.out.println("11:查找一个学生");
			System.out.println("12:根据编号更新学生的基本信息");
			System.out.println("13:根据编号删除学生");
			System.out.println("14:根据编号输入学生的和门成绩");
			System.out.println("15:根据某门成绩进行排序");
			System.out.println("16:根据总分进行排序");
			System.out.println("99:退出系统");
			int no = sc.nextInt(); // 输入代码来选择对应的功能
			if (no == 10) {	//	执行添加成员
				System.out.println("请输入学生姓名:");
				String stuName = sc.next();	//	输入学生姓名
				System.out.println("请输入学生年龄:");
				int age = sc.nextInt();		//	输入学生年龄
				excute.addStu(stuName, age, stuArr);
			}else if (no==11) {	//	执行查询
				System.out.println("--执行查找学生的基本信息操作--");
				System.out.println("请输入学生编号进行查找:");
				int stuNum=sc.nextInt();	//	输入学生编号
				excute.select(stuNum,stuArr);
			}else if (no==12) {	//	执行修改
				System.out.println("--执行修改学生的基本信息--");
				System.out.println("请输入学生的编号:");
				int stuNum=sc.nextInt();	//	输入学生编号
				System.out.println("请输入学生的姓名:");
				String stuName = sc.next();	//	输入学生姓名
				System.out.println("请输入学生的年龄:");
				int age = sc.nextInt();		//	输入学生年龄
				excute.modify(stuNum, stuName, age, stuArr);
			}else if (no==13) {
				System.out.println("--执行删除学生--");
				System.out.println("请输入学生的编号:");
				int stuNum=sc.nextInt();	//	输入学生编号
				excute.delete(stuNum, stuArr);
			}else if (no==14) {
				System.out.println("--执行添加学生成绩--");
				System.out.println("请输入学生编号:");
				int stuNum = sc.nextInt();
				excute.modifyScore(stuNum, stuArr);
			}else if (no==15) {
				System.out.println("--根据指定课程进行排序--");
				System.out.println("请输入需要排序的科目(1、java 2、c# 3、html 4、sql):");
				int num=sc.nextInt();
				excute.sortCourse(num, stuArr);
			}else if (no==16) {
				System.out.println("--按总分来进行排序--");
				excute.sortSum(stuArr);
			}
			if (no == 99) {
				System.out.println("退出成功!");
				flag=false;
			}
		}
		sc.close();
	}
}

3、执行功能的类(初步了解和实现封装,虽然了解不那么深,但慢慢来么):

package stuManagement;

import java.util.Scanner;

public class Function { // function:功能————进行管理学生的类
	String title = "\t编号" + "\t姓名" + "\t年龄" + "\tjava" + "\tc#" + "\thtml" + "\tsql" + "\t总分" + "\t平均分";
	Scanner sc = new Scanner(System.in);

	public void print(StuInfo[] stuArr) { // 每次执行操作完成后刷新数据
		System.out.println(title);
		for (int i = 0; i < stuArr.length; i++) {
			if (stuArr[i] != null) {
				stuArr[i].setSum();
				stuArr[i].setAvg();
				System.out.println(stuArr[i]);
			}
		}
	}
	public boolean exist(int stuNum, StuInfo stu) { // 判断查找的学生是否存在
		if (stu != null) {
			if (stu.getNum() == stuNum) {
				return true;
			} else {
				return false;
			}
		}
		return false;
	}
	public void addStu(String name, int age, StuInfo[] stuArr) { // 添加
		StuInfo stu = new StuInfo();
		stu.setStuName(name);
		stu.setAge(age);
		int i = setIndex(stuArr); // 调用setIndex方法,将该方法的返回值赋值给变量i
		stu.setNum(i); // 将i的值作为学生数组的索引
		if (i == 9999) {
			System.out.println("学生人数已最大,无法添加了!");
		}
		stuArr[i] = stu;
		print(stuArr);
	}
	public int setIndex(StuInfo[] stuArr) { // 返回数组为空的索引
		for (int i = 0; i < stuArr.length; i++) {
			if (stuArr[i] == null) {
				return i;
			}
		}
		return 9999;
	}
	public void select(int stuNum, StuInfo[] stuArr) { // 查询
		System.out.println(title);
		for (int i = 0; i < stuArr.length; i++) {
			if (exist(stuNum, stuArr[i]) == true) {
				System.out.println(stuArr[i]);
				return; // 注意:此处如果用break,则执行完成后还会执行下面的打印语句;而用return则不会
			}
		}
		System.out.println("要查找的学生不存在");
	}
	public void modify(int stuNum, String stuName, int age, StuInfo[] stuArr) { // 修改学生基本信息
		for (int i = 0; i < stuArr.length; i++) {
			if (exist(stuNum, stuArr[i])) { // 先执行判断,再进行修改(==true可以不用写)
				stuArr[i].setStuName(stuName);
				stuArr[i].setAge(age);
				System.out.println("更新学生信息成功!");
				print(stuArr);
				return; // 此处用return原因同上
			}
		}
		System.out.println("要修改的学生不存在");
	}
	public void delete(int stuNum, StuInfo[] stuArr) { // 删除
		for (int i = 0; i < stuArr.length; i++) {
			if (exist(stuNum, stuArr[i])) {
				stuArr[i] = null;
				print(stuArr);
				return;
			}
		}
		System.out.println("要删除的学生不存在");
	}
	public void modifyScore(int stuNum, StuInfo[] stuArr) { // 添加成绩
		for (int i = 0; i < stuArr.length; i++) {
			if (exist(stuNum, stuArr[i])) {
				System.out.println("请输入" + stuArr[i].getStuName() + "的java成绩:");
				stuArr[i].setJava(sc.nextInt());
				System.out.println("请输入" + stuArr[i].getStuName() + "的c#成绩:");
				stuArr[i].setC_shap(sc.nextInt());
				System.out.println("请输入" + stuArr[i].getStuName() + "的html成绩:");
				stuArr[i].setHtml(sc.nextInt());
				System.out.println("请输入" + stuArr[i].getStuName() + "的sql成绩:");
				stuArr[i].setSql(sc.nextInt());
				print(stuArr);
				return;
			}
		}
		System.out.println("找不到该学生,请确认学生编号!");
	}
	public void sortCourse(int num, StuInfo[] stuArr) { // 按某一门成绩进行排序(1、java 2、c# 3、html 4、sql)
		if (num == 1) {
			for (int i = 0; i < stuArr.length - 1; i++) {
				for (int j = i + 1; j < stuArr.length; j++) {
					if (stuArr[i] != null && stuArr[j] != null) { // 选择的成绩不为空才排序
						if (stuArr[i].getJava() < stuArr[j].getJava()) {
							StuInfo temp = stuArr[i];
							stuArr[i] = stuArr[j];
							stuArr[j] = temp;
						}
					}
				}
			}
		} else if (num == 2) {
			for (int i = 0; i < stuArr.length - 1; i++) {
				for (int j = i + 1; j < stuArr.length; j++) {
					if (stuArr[i] != null && stuArr[j] != null) { // 选择的成绩不为空才排序
						if (stuArr[i].getC_shap() < stuArr[j].getC_shap()) {
							StuInfo temp = stuArr[i];
							stuArr[i] = stuArr[j];
							stuArr[j] = temp;
						}
					}
				}
			}
		} else if (num == 3) {
			for (int i = 0; i < stuArr.length - 1; i++) {
				for (int j = i + 1; j < stuArr.length; j++) {
					if (stuArr[i] != null && stuArr[j] != null) { // 选择的成绩不为空才排序
						if (stuArr[i].getHtml() < stuArr[j].getHtml()) {
							StuInfo temp = stuArr[i];
							stuArr[i] = stuArr[j];
							stuArr[j] = temp;
						}
					}
				}
			}
		} else if (num == 4) {
			for (int i = 0; i < stuArr.length - 1; i++) {
				for (int j = i + 1; j < stuArr.length; j++) {
					if (stuArr[i] != null && stuArr[j] != null) { // 选择的成绩不为空才排序
						if (stuArr[i].getSql() < stuArr[j].getSql()) {
							StuInfo temp = stuArr[i];
							stuArr[i] = stuArr[j];
							stuArr[j] = temp;
						}
					}
				}
			}
		}
		print(stuArr);
	}
	public void sortSum(StuInfo[] stuArr) {	//	按总分排序
		for (int i = 0; i < stuArr.length - 1; i++) {
			for (int j = i + 1; j < stuArr.length; j++) {
				if (stuArr[i] != null && stuArr[j] != null) { // 选择的成绩不为空才排序
					if (stuArr[i].getSum() < stuArr[j].getSum()) {
						StuInfo temp = stuArr[i];
						stuArr[i] = stuArr[j];
						stuArr[j] = temp;
					}
				}
			}
		}
		print(stuArr);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值