JAVA——实现学生类学号与姓名排序输出
功能:学生获得000-999之间的随机学号,姓名映射为AAA-JJJ,可按三种排序方式对学生学号排序。
交互输入:学生数与排序方式
输出:获得对应数量的学生实例对象,并按提供方式排序输出
补充:代码设计比较混乱,不适用学习,有需求可直接复制
import java.util.Scanner; import java.util.Random; import java.util.Arrays; public class Stu { static class stu implements Comparable<stu>{ public int No; public int Sort_No; public String name; public int show_No; //学生类中实现创建随机学号且生成对应姓名 stu(int NO,int ch)//构造函数 { this.No=NO; this.name=getname(); this.show_No=get_showNo(ch); } public int get_showNo(int ch) { if (ch==1) No=this.No; else if (ch==2) No=(this.No/10-this.No/100*10)*100+this.No%10*10+this.No/100; else No=this.No%10*100+this.No/100*10+(this.No/10-this.No/100*10); return No; } public String getname() { int i=0,j=0,k=0; k=(No%10)+65; j=((No-k+65)/10)%10+65; i=(No-(j-65)*10-k+65)/100+65; char[] data= {(char)i,(char)j,(char)k}; return String.valueOf(data); } public int compareTo(stu stu1) { if(this.show_No==stu1.show_No) return 0; else if(this.show_No<stu1.show_No) return -1; else return 1; } public void print() { System.out.printf("%d%d%d %s ",this.show_No/100,this.show_No/10-this.show_No/100*10,this.show_No%10,this.name); } } /* * 1.创建学生类 * 2.创建函数:输入人数,随机生成学号与姓名对应的学生实例,放入学生类数组,使用sort对数组的学号排序 * 3.对学生排序,并输出 */ public static void main(String[] args) { int[] Num_Choice=new int[2]; //创建接收人数与排序方式的全局数组 int[] No_sql=new int[1001];//创建学号库 No_sql[1000]=-1; menu(Num_Choice); //获得人数与选择 stu[] stus=new stu[Num_Choice[0]]; //获得学生类数组 RandCreate_stus(stus,Num_Choice,No_sql);//将学生数组实现 for (int i=0;i<Num_Choice[0];i++) { System.out.println(stus[i].No+""+stus[i].name); } Sort_Print(stus,Num_Choice);//学生数组排序 } public static void menu(int[] Num_Choice)//菜单函数 { Scanner in=new Scanner(System.in); System.out.println("请输入学生数: "); if(in.hasNext()) { Num_Choice[0]=in.nextInt(); } System.out.println( "三种排序对应选择: " +"百十个--1 " +"十个百--2 " +"个百十--3 " +"请输入排序方式: "); { Num_Choice[1]=in.nextInt(); } in.close(); System.out.println(); } public static stu[] RandCreate_stus(stu[] stus,int[] Num_Choice,int[] No_sql)//创建学生 { Random rand=new Random();//设置随机数种子 int i=0; for(i=0;i<Num_Choice[0];i++) { int randn=0; int tag1=0; while(tag1==0) { int tag2=0; randn=rand.nextInt(999); for(int x=0;x<Num_Choice[0];x++) { if(randn==No_sql[x]) { tag2=1; break; } else ; } if(tag2==0) { tag1=1; No_sql[i]=randn; } } stu st=new stu(randn,Num_Choice[1]);//外部类可实例 stus[i]=st; } return stus; } public static void Sort_Print(stu[] stus,int[] Num_Choice)//排序输出 排序学号与姓名 { if(Num_Choice[1]==1) System.out.println("百十个顺序排列为:"); else if(Num_Choice[1]==2) System.out.println("十个百顺序排列为:"); else System.out.println("个百十顺序排列为:"); Arrays.sort(stus); Stus_Print(stus,Num_Choice[0]); } public static void Stus_Print(stu[] stus,int len) { System.out.println("学号 姓名"); for(int i=0;i<len-1;i++) { stus[i].print(); } } }