首页 > 其他分享 >使用数组操作实体类

使用数组操作实体类

时间:2023-09-29 17:46:01浏览次数:26  
标签:实体类 myArrar int len num 数组 Student 操作 public

  • 编写实体类
public class Student {

    String name; // 姓名

    String sex; // 性别

    int sno; // 学号

    int score; // 成绩

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getSno() {
        return sno;
    }

    public void setSno(int sno) {
        this.sno = sno;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", sno=" + sno +
                ", score=" + score +
                '}';
    }

}
  • 编写方法
public class MyArrar {

    Student[] num = new Student[100];

    private int len=0;

    public int size(){
        return len;
    }

    //添加一个学生,放到数组的最后
    public int add(Student stu){
        if(len<num.length){
            num[len]=stu;
            len++;
            return 1;
        } else {
            return -1;
        }
    }

    //显示所有学生的信息
    public void show(){
        System.out.println("学号\t姓名\t性别\t成绩");
        for (int i = 0; i < len; i++) {
            Student stu=num[i];
            System.out.println(" " + stu.getSno() + "  " + stu.getName()
                    + "  " + stu.getSex() + "  " + stu.getScore());
        }
    }

    //根据下标删除
    // [0][1][]
    public int remove(int index){
        if(index>len-1){
            return -1;  // 数组为空或下标大于数组长度
        }else {
            for(int i=index; i<len; i++){
                num[i]=num[i+1];
            }
            len--;
            return 1;
        }
    }

    //根据学号删除
    // [][][6][][]
    public int removeSno(int sno){
        try {
            int index = 0;
            for(int i=0; i<len; i++){
                if(num[i].getSno()==sno){
                    index=i;
                    break;
                }
            }
            // del
            for(int i=index; i<len; i++){
                num[i]=num[i+1];
            }
            len--;
            return 1;
        }catch (ArrayIndexOutOfBoundsException e){
            return -1;
        }
    }

    //根据学号查找学生
    public Student findBySno(int sno) {
        int index = 0;
        for(int i=0; i<len; i++){
            if(num[i].getSno()==sno){
                index=i;
                break;
            }
        }
        return num[index];
    }

    //根据姓名查找学生
    public Student findByName(String name){
        int index = 0;
        for(int i=0; i<len; i++){
            if(num[i].getName()==name){
                index=i;
                break;
            }
        }
        return num[index];
    }

    //成绩升序排序
    public void sortAsc(){
        for(int b = len-1; b>0; b--){
            Student tmp;
            int i=0;
            for(int a = b; a>0; a--){
                if(num[i].getScore()>num[i+1].getScore()){
                    tmp = num[i];
                    num[i] = num[i+1];
                    num[i+1] = tmp;
                }
                i++;
            }
        }
    }

    //假如已经按照成绩升序排序之后,将学生添加到对应的位置,保证数组仍然是升序
    public void addSortAsc(Student stu){
        for (int i = 0; i < len; i++) {
            if (stu.getScore() < num[i].getScore()){
                // 后移
                for(int j=len; j>i; j--){
                    num[j]=num[j-1];
                }
                // 长度++
                len++;
                // 插入位置0
                num[i]=stu;
                // 结束整个循环
                break;
            }else { // 大于等于ints[0]
                // 不成立则continue,进入下一轮比较
                continue;
            }
        }
        // 当插入的值比数组中最大的值还大时,插入到最后
        if(stu.getScore() >= num[len-1].getScore()){
            num[len]=stu;
            len++;
        }
    }

    //成绩降序排序
    public void sortDesc(){
        for(int b = len-1; b>0; b--){
            Student tmp;
            int i=0;
            for(int a = b; a>0; a--){
                if(num[i].getScore()<num[i+1].getScore()){
                    tmp = num[i];
                    num[i] = num[i+1];
                    num[i+1] = tmp;
                }
                i++;
            }
        }
    }

    //假如已经按照成绩降序排序之后,将学生添加到对应的位置,保证数组仍然是降序
    //[90][80][70][]
    //[0][1][2][]
    public void addSortDesc(Student stu){
        for (int i = 0; i < len; i++) {
            if (stu.getScore() > num[i].getScore()){
                // 后移
                for(int j=len; j>i; j--){
                    num[j]=num[j-1];
                }
                // 长度++
                len++;
                // 插入位置0
                num[i]=stu;
                // 结束整个循环
                break;
            }else { // 小于等于ints[0]
                // 不成立则continue,进入下一轮比较
                continue;
            }
        }
        // 当插入的值比数组中最小的值还小时,插入到最后
        if(stu.getScore() <= num[len-1].getScore()){
            num[len]=stu;
            len++;
        }
    }

}
  • 测试
public class test {
    public static void main(String[] args) {
        MyArrar myArrar=new MyArrar();

        Student student=new Student();
        student.setName("张三");
        student.setSex("男");
        student.setSno(3);
        student.setScore(68);
        myArrar.add(student);
        Student student1=new Student();
        student1.setName("张四");
        student1.setSex("女");
        student1.setSno(9);
        student1.setScore(95);
        myArrar.add(student1);
        Student student2=new Student();
        student2.setName("李三");
        student2.setSex("男");
        student2.setSno(6);
        student2.setScore(72);
        myArrar.add(student2);
        // len
        System.out.println(myArrar.size());
        // 显示
        myArrar.show();

        // 删除
//        myArrar.remove(1);
//        myArrar.show();
//        myArrar.removeSno(6);
//        myArrar.show();

        // 查找
        System.out.println(myArrar.findBySno(6));
        System.out.println(myArrar.findByName("李三"));

        // 排序
        System.out.println("--- 成绩升序 ---");
        myArrar.sortAsc();
        myArrar.show();
        System.out.println("--- 插入一条数据 ---");
        Student student3=new Student();
        student3.setName("李五");
        student3.setSex("男");
        student3.setSno(7);
        student3.setScore(95);
        myArrar.addSortAsc(student3);
        myArrar.show();

        System.out.println("--- 成绩降序 ---");
        myArrar.sortDesc();
        myArrar.show();
        System.out.println("--- 插入一条数据 ---");
        Student student4=new Student();
        student4.setName("李六");
        student4.setSex("男");
        student4.setSno(2);
        student4.setScore(68);
        myArrar.addSortDesc(student4);
        myArrar.show();

    }
}

标签:实体类,myArrar,int,len,num,数组,Student,操作,public
From: https://www.cnblogs.com/dogleftover/p/17737129.html

相关文章

  • git日常操作汇总
    1、如果本地已经有代码,现在想用git管理,操作步骤如下:1、进入项目根目录下,执行gitinit2、添加所有文件gitadd.3、提交gitcommit-m'init'4、关联到远程仓库,git上先创建一个项目,然后再关联gitremoteaddoriginhttps://gitee.com/xxx/hr.git5、gitpush-uorigin......
  • TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素
    TCP/IP连接数的最大值取决于操作系统、硬件和应用程序等多个因素。下面是一些常见操作系统中TCP/IP连接数的默认值和最大值:Windows10/WindowsServer2019:默认值为16384,最大值为16777216Windows8/WindowsServer2012:默认值为16384,最大值为16777216Windows7/WindowsServer......
  • 使用数组模拟队列和栈
    使用数组模拟队列案例1publicclassQueue{privateint[]num=newint[5];privateintlen=0;publicintsize(){returnthis.len;}//添加publicintadd(intn){if(len<num.length){num[len]=n;......
  • 使用数组模拟集合
    编写方法publicclassMyArrayList{privateint[]n=newint[10];//动态数组privateintsize=0;//长度publicintsize(){returnthis.size;}//添加一个元素publicvoidadd(intelement){n[size]=element;......
  • 向有序数组插入数据,数组依然是有序的
    数组降序的情况下插入数据依然是降序第1次推导publicclasstest{publicstaticvoidmain(String[]args){int[]ints={90,80,70};inttmp=85;//与第1个数比较时//[0][1][2][]if(tmp>ints[0]){/......
  • 数组冒泡排序
    第1次推导publicclasstest{publicstaticvoidmain(String[]args){int[]ints={6,5,9,5};inttmp;if(ints[0]>ints[1]){tmp=ints[0];ints[0]=ints[1];ints[1]=tmp;}......
  • 数组插入排序
    第1次推导publicclasstest{publicstaticvoidmain(String[]args){int[]ints={2,5,3,1,8,9};inttmp;//存储临时变量intj;//开始比较第几位的数//第1次//2,5,3,1,8,9j=1;//比较索引1的数......
  • [笔记]操作系统_2024年考纲
    一、操作系统基础(一)操作系统的基本概念(二)操作系统发展历程(三)程序运行环境1.CPU运行模式内核模式,用户模式。2.中断和异常的处理3.系统调用4.程序的链接与装入5.程序运行时的内存映像与地址空间(四)操作系统结构分层,模块化,宏内核,微内核,外核。(五)操作系统引导(六)虚拟......
  • asp .net core Exceptionless日志操作
    exceptionless官网使用说明安装Nuget包添加引用usingExceptionless;usingExceptionless.Logging;初始化-秘钥-请求地址//构造函数初始化日志参数(日志系统地址,项目模块)publicDefaultController(){if(string.IsNullOrWhiteSpace(ExceptionlessClient.Default.Config......
  • sql查询之拼接外表或该表不存在的数据,简化多表联查的操作
    (内容)1.引言最近写项目时,用到了多表联查的知识点,我需要传article类和web_user类的username的参数这是我的三个表--MySQLdump10.13Distrib8.0.26,forWin64(x86_64)----Host:127.0.0.1Database:web-----------------------------------------------------......