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\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();
		}

	}
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aidroid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值