新手请问这个程序哪里出错,跪求大神解答!!!!!

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

Lx_21

2018-06-01 10:03

/**

* 3.对其他类型泛型的List进行排序,以Student为例。

* 其中生成的id为1000以内不重复的整数

*/

public void testStudentSort() {

Random r= new Random();

for(int i=0;i<3;i++ ) {

int id=r.nextInt(1000);

String name =dllx.next();

System.out.println("请输入第"+(i+1)+"个学生的姓名:");

do{

student.add(new Student(id+"",name));

}while (student.contains(id));


}

System.out.println("--------------排序前------------");

for (Student student2 : student) {

System.out.println(student2.getId()+":"+student2.getName());

}

Collections.sort(student);

System.out.println("--------------排序后------------");

for (Student student2 : student) {

System.out.println(student2.getId()+":"+student2.getName());

}

}


写回答 关注

3回答

  • songqi12so
    2018-08-30 12:23:31


    正确思路是:do的时候随机一个ID,while的时候判断是否包含这个ID,然后花括号中添加这个ID

    这样就形成了一个ID的随机添加,for循环3次。


    在一开始如果需要有一个循环有固定的多个结果,优先使用for

    for3次循环,用if判断contains,然后添加。

    这样思路就不会乱,并且在需要扩展的时候也很方便

    当然dowhile更符合你的胃口的话,也挺好

    我在实现的时候其实为了让思路更加清晰,使用了三个while进行判断三个随机数互不相等,然后直接使用三个while当中的参数引用到new Student的ID当中去,这样虽然看起来笨重,但是对于原始的代码影响最小,但是也不符合后期的修改和扩容。希望能给你带来灵感

  • 淮海中路
    2018-08-24 10:46:44
    for(int i=0;i<3;i++ ) {
        System.out.println("请输入第"+(i+1)+"个学生的姓名:");
        String name =dllx.next();
        do{
            int id=r.nextInt(1000);
        }while (student.contains(id));
        student.add(new Student(id+"",name));    
    }

    你的逻辑是当list中存在当前id时,会一直添加这个student

  • 莫君
    2018-06-01 19:51:00

    System.out.println("请输入第"+(i+1)+"个学生的姓名:");这句不应该写在前面吗?

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题