需求
String s1 = “1,2,3,4,5,6,7,8.9,10,11,12,13,14,15”;//代表全部参与抽奖的人员编号
String s2 =”2,5,6”;//代表已经中奖的人员编号
int number = 3;
写一个函数,从s1中随机筛选出number个数字,且此数字不在s2中。返回一个字符串。
代码
public class Main {
public static void main(String args[]) {
String s1 = "1,2,3,4,5,6,7,8.9,10,11,12,13,14,15";//代表全部参与抽奖的人员编号
String s2 ="2,5,6";//代表已经中奖的人员编号
int number = 3;
Main t1 = new Main();
String result = t1.test(s1, s2, number);
System.out.println(result);
}
private String test(String s1,String s2,int number) {
String temp;
String result="";
int rn;
//用replace方法将s1中含有s2的字符串删除掉
String[] arr2 = s2.split(",");
s1 =","+s1+","; //给字符串前后各加一个逗号,使用replace时候就不会忽略最后一个
for(int i=0;i<arr2.length;i++) {
temp =","+arr2[i] +",";
s1 = s1.replace(temp, ",");
}
//将字符串最后一个逗号去掉
s1 = s1.substring(1, s1.length()-1);
String[] arr1 = s1.split(",");
//生成number个不相同的随机数
List<Integer> list = new ArrayList<>();
for(int i=0;i<number;i++) {
rn = (int) Math.ceil(Math.random()*(arr1.length-1));
while(list.contains(rn)) {
rn = (int) (Math.random()*(arr1.length)-1);
}
list.add(rn);
result = result + arr1[rn]+",";
}
//去掉字符串最后的逗号
result = result.substring(0, result.length()-1);
return result;
}
}