附作业代码:用户输入学生数目,并为每个学生生成不重复的随机3位数ID,让用户输入学生名,实现排序,分别comparable按ID排序及comparator按姓名排

来源:6-8 学生选课--- 实现学生序列排序

红袖侍读

2016-06-14 07:03

package com.course;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
 * given a number, auto-generated all the student ID, which contains 3 digits and is unique
 * for each ID generating, customer should enter a student name
 * 1. implement sorting all the student record by their ID with comparable interface
 * 2. implement sorting all the student record by their name with comparator interface
 * @author richard
 *
 */
public class ListSortStudent {
    
    List<Student> stuList = new ArrayList<Student>();
    final String digitChar = "0123456789";
    
    //generate single student ID with 3 digits
    public String genOneID(){
        StringBuffer sb = new StringBuffer();
        Random ran = new Random();
        for(int j=0;j<3;j++){
            sb.append(digitChar.charAt(ran.nextInt(digitChar.length())));
        }
        return sb.toString();    
    }
    
    /**
     * generate a student list which contain auto-generated ID and keyboard input name
     * the ID should be unique
     */
    public void genStuList(){        
        Scanner input = new Scanner(System.in);
        Scanner input1= new Scanner(System.in);
        System.out.print("Please enter the number of student: ");
        int stuNum = input.nextInt();        
        
        String stuID,stuName;
        List<String> idList = new ArrayList<String>();
        Student newStu;
        
        for (int i=0;i<stuNum;i++){
            stuID = genOneID();        
            while(idList.contains(stuID)){
                stuID = genOneID();
            }
            idList.add(stuID);
            System.out.println("the auto-generated ID is: "+idList.get(i));
            System.out.print("Please enter the student name:  ");
            stuName = input1.nextLine();
            newStu = new Student(stuName,stuID);
            stuList.add(newStu);
        }
    }
    
    public void displayStuList(){
        for(Student s:stuList){
            System.out.println(s.getID()+"  "+s.getName());
        }
    }
    
    public void sortStudentComparable(){
        Collections.sort(stuList);
    }
    
    public void srotStudentComparator(){
        Collections.sort(stuList,new StuComparator());
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ListSortStudent lst = new ListSortStudent();
        
        lst.genStuList();
        System.out.println("************before sorting********");
        lst.displayStuList();
        System.out.println("************after sorting by id**********");
        lst.sortStudentComparable();
        lst.displayStuList();
        System.out.println("************after sorting by name**********");
        lst.srotStudentComparator();
        lst.displayStuList();
    }
}
写回答 关注

1回答

  • gank
    2016-06-19 09:56:48

    好牛哦

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题