Java学生成绩排序输出的三种不同方法 您所在的位置:网站首页 将计算机考试成绩按从高到低进行排序的方法有 Java学生成绩排序输出的三种不同方法

Java学生成绩排序输出的三种不同方法

2023-10-03 18:38| 来源: 网络整理| 查看: 265

要实现学生成绩的排序,要从两方面来考虑如何设计程序。 第一方面是选择存储方式 第二方面是选择什么样的排序方式 以下是三种不同类型的实现:

使用对象数组存储学生信息,冒泡法实现排序使用List存储学生信息,ArrayList冒泡法实现排序利用Comparator接口和Collections类实现自动排序

成绩排序功能实现结果如下

请添加图片描述

方法一:数组排序

采用对象数组的方式来存储学生对象,定义班级类,使用数组来保存班级的学生,代码如下

//使用对象数组存储学生信息,使用冒泡排序算法实现排序 public class test { public static void main(String[] args) { // TODO Auto-generated method stub //创建班级并实例化 studentclass sclass=new studentclass(); //添加学生 sclass.createclass(); System.out.println("原始顺序:"); //排序前的输出 System.out.println(sclass.output()); sclass.sort(); System.out.println("数组冒泡排序的结果:"); //冒泡排序后的输出 System.out.println(sclass.output()); } } class student { private String name; private int age; private double grade; public student(String name,int age,double grade) { this.name=name; this.age=age; this.grade=grade; } //置取方法 public double getGrade() { return grade; } public String getName() { return name; } } class studentclass { private student[] stus; private int size; public studentclass(){ size=0; stus=null; } //创建班级方法 public void createclass() { //定义三个数组存放学生的信息 String names[]= {"张三","王五","李四","赵六","孙七"}; double grades[]= {67,78.5,98,76.5,90}; int ages[]= {17,18,18,19,17}; //把name的长度作为数组长度 size=names.length; //创建班级stus stus=new student[size]; for(int i=0;i student temp; //冒泡排序 for(int i=0;i if(stus[j-1].getGrade()>stus[j].getGrade()) { temp=stus[j-1]; stus[j-1]=stus[j]; stus[j]=temp; } } } } //输出方法 public String output() { //StringBuilder表示可变字符字符串 StringBuilder studentinfo=new StringBuilder(); for(int i=0;i public static void main(String[] args) { // TODO Auto-generated method stub studentclass sclass=new studentclass(); sclass.createclass(); //添加一个学生 sclass.add(new student("杨哥",18,70)); System.out.println("原始顺序:"); System.out.println(sclass.output()); sclass.sort(); System.out.println("数组冒泡排序的结果:"); System.out.println(sclass.output()); } } class studentclass { //用到泛类student,stulist保存班级学生 private List stulist; private int size; public studentclass(){ size=0; stulist=null; } public void createclass() { String names[]= {"张三","王五","李四","赵六","孙七"}; double grades[]= {67,78.5,98,76.5,90}; int ages[]= {17,18,18,19,17}; size=names.length; //实例化类型为ArrayList stulist=new ArrayList(); student temp; for(int i=0;i student temp; //冒泡排序 for(int i=0;i //get获取第几个元素 if(stulist.get(j-1).getGrade()>stulist.get(j).getGrade()) { temp=stulist.get(j-1); //set插入当前位置 stulist.set(j-1,stulist.get(j)); stulist.set(j, temp); } } } } public void add(student s) { stulist.add(s); size=stulist.size(); } public String output() { StringBuilder studentinfo=new StringBuilder(); for(student stu:stulist) { studentinfo.append("姓名:"+stu.getName()+"\t成绩:"+stu.getGrade()+"\r\n"); } return studentinfo.toString(); } } class student { private String name; private int age; private double grade; public student(String name,int age,double grade) { this.name=name; this.age=age; this.grade=grade; } public double getGrade() { return grade; } public String getName() { return name; } }

在createclass方法中,根据班级人数创建班级对象stulist的实例,实例类型为ArrayList,应用ArrayList的方法add()将学生对象添加到班级中。 其中sort排序过程使用到了ArrayList的两个方法 public E get(int index) 获取第index个元素 public E set(int index, E element) 将元素element插入到对象的第index的位置上 其中for(student stu: stulist)就相当于 for(int i=0;i public static void main(String[] args) { // TODO Auto-generated method stub studentclass sclass=new studentclass(); sclass.createclass(); System.out.println("原始顺序:"); System.out.println(sclass.output()); sclass.sort(); System.out.println("数组冒泡排序的结果:"); System.out.println(sclass.output()); } } //实现Comparator接口 class studentComparator implements Comparator { public int compare(student student1,student student2) { double grade1,grade2; grade1=student1.getGrade(); grade2=student2.getGrade(); if(grade1>grade2) { return 1; }else if(grade1 return 0; } } } class studentclass { private List stulist; private int size; public studentclass(){ size=0; stulist=null; } public void createclass() { String names[]= {"张三","王五","李四","赵六","孙七"}; double grades[]= {67,78.5,98,76.5,90}; int ages[]= {17,18,18,19,17}; size=names.length; stulist=new ArrayList(); student temp; for(int i=0;i //创建一个比较器类对象sc,使用静态方法sort实现排序 studentComparator sc=new studentComparator(); Collections.sort(stulist,sc); } public String output() { StringBuilder studentinfo=new StringBuilder(); for(student stu:stulist) { studentinfo.append("姓名:"+stu.getName()+"\t成绩:"+stu.getGrade()+"\r\n"); } return studentinfo.toString(); } } class student { private String name; private int age; private double grade; public student(String name,int age,double grade) { this.name=name; this.age=age; this.grade=grade; } public double getGrade() { return grade; } public String getName() { return name; } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有