注册 登录
编程论坛 JAVA论坛

本人菜鸟 寻求答案

向上吧ん丫头 发布于 2015-06-20 17:16, 696 次点击
Java实践幸运观众问题
假设某班级有20个同学(姓名无重名) 参加某个晚会,晚会上随机抽出5名幸运观众(程序结果显示出幸运观众的名字)

请问大神这该怎么编程序。= = 求过程

 谢谢帮忙!
7 回复
#2
不懂才问2015-06-20 18:11
思路是

假设20个人的名字,在数据库中

创建一个数组,调出数据库中的人名

循环产生五个20以内的随机数,但不能有重复

将产生的随机数作为数组下标,得出五个幸运名单
#3
向上吧ん丫头2015-06-21 13:44
回复 2楼 不懂才问
能帮我把程序直接编出来吗

实在不会 初学 上课没怎么懂
谢谢谢谢
#4
秦时的明月夜2015-06-21 16:03
程序代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class 幸运观众 {
    public static void main(String[] args) {
        String firstName[]={"赵","钱","孙","李","周","吴","郑","王","冯","陈","楮","卫","蒋","沈","韩","杨","朱","秦","尤","许"};
        String lastName[]={"三","四","五","六","七","八","九","伟","楠","理","平","好","富","故","佳","家","云","逢","风","嘻"};
        Person p[]=new Person[20];
        List list1=Arrays.asList(firstName);
        List list2=Arrays.asList(lastName);
        ArrayList arraylist1=new ArrayList(list1);
        ArrayList arraylist2=new ArrayList(list2);
        for (int i = 0; i < p.length;) {
            int a=((int)(Math.random()*100))%(list1.size());
            int b=((int)(Math.random()*100))%(list2.size());
            if(a>=arraylist1.size()||b>=arraylist2.size())
                continue;
            p[i]=new Person();
            p[i].setId(i);
            p[i].setName(arraylist1.get(a).toString()+arraylist2.get(b).toString());
            arraylist1.remove(a);
            arraylist2.remove(b);
            i++;
            }
        
        List<Integer> alist=new ArrayList<Integer>();
        for(int i=0;i<5;){
            int a=((int)(Math.random()*100))%20;
           if(!alist.contains(a)&&a!=0){
               alist.add(a);
                i++;
           }
        }
        System.out.println("幸运观众:");
        for (int i = 0; i < 5; i++) {
            System.out.println(p[ alist.get(i)].getId()+"号\t"+p[alist.get(i)].getName()+"\t成为幸运观众");
        }
        
    }
   
}
class Person{
    private String name;
    private int id;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}

/**
幸运观众:
15号    卫四    成为幸运观众
2号    朱好    成为幸运观众
4号    周九    成为幸运观众
13号    楮七    成为幸运观众
14号    秦云    成为幸运观众


*/
//你应该看看吧规………………

[ 本帖最后由 秦时的明月夜 于 2015-6-21 16:39 编辑 ]
#5
向上吧ん丫头2015-06-21 16:37
回复 4楼 秦时的明月夜
这个老师讲过的 没懂 打算请人帮我编译出来好好琢磨= = 可能我比较笨 学的太慢了  十分谢谢你的帮助
#6
秦时的明月夜2015-06-21 16:41
回复 4楼 秦时的明月夜
刚才没有判断重复情况……我改改了该……
#7
林月儿2015-06-21 18:37
程序代码:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class game {
    public static void main(String[] args) {
        String firstName[]={"赵","钱","孙","李","周","吴","郑","王","冯","陈","楮","卫","蒋","沈","韩","杨","朱","秦","尤","许"};
        String lastName[]={"三","四","五","六","七","八","九","伟","楠","理","平","好","富","故","佳","家","云","逢","风","嘻"};
        Person p[]=new Person[20];
        List<String> list1=Arrays.asList(firstName);
        List<String> list2=Arrays.asList(lastName);
        ArrayList<String> arraylist1=new ArrayList<String>(list1);
        ArrayList<String> arraylist2=new ArrayList<String>(list2);
        for (int i = 0; i < p.length;i++) {
            int a=((int)(Math.random()*100))%(list1.size());
            int b=((int)(Math.random()*100))%(list2.size());
            if(a>=arraylist1.size()||b>=arraylist2.size())
                continue;
            String names=arraylist1.get(a).toString().trim()+arraylist2.get(b).toString().trim();
            for(int j=0;j<i;j++)
                if(p[j].getName().equals(names)){
                    i--;
                    continue;
                }
            p[i]=new Person();
            p[i].setId(i);
            p[i].setName(names);
        }
        List<Integer> alist=new ArrayList<Integer>();
        for(int i=0;i<5;i++){
            int a=((int)(Math.random()*100))%20;
           if(!alist.contains(a)&&a!=0){
               alist.add(a);
           }
           else i--;
        }
        System.out.println("幸运观众:");
        for (int i = 0; i < 5; i++) {
            System.out.println(p[alist.get(i)].getId()+"号\t"+p[alist.get(i)].getName()+"\t成为幸运观众");
        }
        
    }
   
}
class Person{
    private String name;
    private int id;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
#8
不懂才问2015-06-21 20:31
回复 3楼 向上吧ん丫头
其实,我只知道思路,具体怎么做,就不知道了,哈哈
1