跟着视频做一个数组知识的小案例,最开始想自己写来着,突然一懵,犹如老虎吃天——无处下爪。。。。无奈,还是看了视频里面的,突然就觉着熟悉了,也不用跟着视频做了,真爽,只是功能是完成了,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;}@Overridepublic 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方法,将该方法的返回值赋值给变量istu.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);}
}

学习java数组的练习代码相关推荐

  1. 学习-Java数组之foreach遍历数组之正负数数量统计

    第1关:学习-Java数组之foreach遍历数组之正负数数量统计 任务描述 相关知识 foreach 语句 编程要求 测试说明 任务描述 本关任务:使用 foreach 语句统计数组中正负数的个数. ...

  2. JAVA学习-JAVA数组的使用示例

    JAVA数组的简单使用 import java.util.Arrays; public class Arrary1011 {//定义静态类public static void main(String[ ...

  3. java数组声明语句代码,Java 数组(学习 Java 编程语言 013-014)

    数组存储相同类型的序列. 1. 数组声明 数组是一种数据结构,用来存储同一类型值的集合.通过一个整型下标(index,或称索引)可以访问数组中的每一个值. 在声明数组变量时,需要指出数组类型(数据元素 ...

  4. java基础学习——Java数组

    数组 [1]数组的定义 数组是相同类型数据的有序集合.数据描述的是相同类型的若干数据,按照一定的先后次序排列序组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们.数组的 ...

  5. java数组 插入,Java数组添加元素

    本篇文章帮大家学习java数组添加元素,包含了Java数组添加元素使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 以下实例演示了如何使用sort()方法对Java数组进行 ...

  6. 作为初学者,应该如何系统学习Java呢?

    Java编程语言发展的迅猛,每年的Java人才缺口人数都高达百万以上.作为IT小白应该如何系统学习Java呢?作为过来人,小千在这里给大家一些中肯的意见,希望对大家的工作和学习Java有一定的借鉴作用 ...

  7. [转载] JAVA数组实现学生成绩统计

    参考链接: Java程序的输出 20(继承) 一.项目名称 数组实现学生成绩统计 二.项目描述 1.项目简介: 由用户输入学生人数与名字,并定义当前学期课程数与课程名,并分别录入每位学生每门课程成绩, ...

  8. java数组的声明_Java数组定义常用方法

    Java数组定义常用方法 Java中的数组.是一种简单的线性数据存储结构.他用牺牲自动扩展大小来换取与集合相比的唯一优势--查询效率的提升.Java中的数组有什么类型?我们要怎么定义这些数组呢?下面跟 ...

  9. 【Java学习笔记之五】java数组详解

    数组 概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ...

最新文章

  1. 问题:Unable to find a 'userdata.img' file for ABI armeabi to copy into the AVD folder.
  2. 锤子手机使用2年,聊聊锤子手机,坚果手机功能使用体验
  3. C语言-数据结构与其他数据形式
  4. 链表题目---6 复制带随机指针的链表
  5. 【虚拟化实战】存储设计之一存储类型
  6. 深度强化学习:如何在AI工程实践中选择合适的算法?
  7. github克隆仓库加速
  8. clickhouse修改表的TTL
  9. Triangular Pastures
  10. CentOS下Privoxy和Iptables 实现透明代理,修改http-header
  11. VB VBA 文本框回车键换行
  12. 微正MZFinger指纹识别算法
  13. Jquery 实现xml转json
  14. php background,CSS BACKGROUND定位背景上下左右偏移
  15. cs1.6一直连接服务器,CS1.6连接不上服务器解决办法
  16. 初识C语言--第二弹
  17. JAVA字符输入输出流
  18. 手把手教你快速搭建私服环境
  19. windows的cmd常用命令
  20. 手机信号上的G、E、O、3G、H、H+是什么意思?

热门文章

  1. 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
  2. 片上总线Wishbone 学习—— 转载请注明出处:http://blog.csdn.net/ce123
  3. Excel报表的制作
  4. 微信公众号的三大分类及功能
  5. 企业营销环节应用RPA的三大典型场景
  6. Android 三大图片缓存原理、特性对比
  7. Java连接Sql Server的过程及遇到的问题(极端新手向)
  8. Python3的unichr()消失了?不,升级了!
  9. Elasticsearch(ES)入门,这一篇就够了
  10. Mac mini M1使用简单体验(编程、游戏、深度学习)