功能:学生获得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\n",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("请输入学生数:\r\n");
if(in.hasNext())
{
Num_Choice[0]=in.nextInt();
}
System.out.println(
"三种排序对应选择:\r\n"
+"百十个--1\r\n"
+"十个百--2\r\n"
+"个百十--3\r\n"
+"请输入排序方式:\r\n");
{
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();
}
}
}