当前位置: 代码迷 >> J2SE >> 随机获得数组String s[] = {"gequ1""gequ2""gequ3""gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项,该如何解决
  详细解决方案

随机获得数组String s[] = {"gequ1""gequ2""gequ3""gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项,该如何解决

热度:334   发布时间:2016-04-24 18:03:27.0
随机获得数组String s[] = {"gequ1","gequ2","gequ3","gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项
随机获得数组String s[] = {"gequ1","gequ2","gequ3","gequ4"};中的字符串,要不重复的,分别赋值给单选按钮的4个选项,怎么来实现

------解决方案--------------------
ArrayList<String> al=Arrays.asList(s)
Collections.shuffle(al);

al中的的就随机的了.
------解决方案--------------------
写个比较简单的!
List<String> list = new ArrayList<String>();
java.util.Random random = new java.util.Random();
for(int i=0;i<s.length;i++){
Stirng temp =s[random.nextInt(s.length)];
if(!list.contains(temp)){
list.add(temp);
}
}
然后把list分别赋值就可以了

------解决方案--------------------
自己写一个也好办:

Java code
boolean[] flag=new boolean[s.length()];Random r=new Random();for(i=0;i<s.length();){   int index=r.nextInt(4);   if(!flag[index]){      btn[i].setText(s[index]);// 假设你的按钮都放在一个btn数组中了.      flag[index]=true;      i++;    }}
------解决方案--------------------
再来一个:

Java code
Random r=new Random();String temp=null;for(int i=s.length()-1;i>=0;i++){    int t=r.nextInt(i);    temp=s[t];    btn[i].setText(temp);    s[t]=s[i];    s[i]=temp;}
------解决方案--------------------
i--
------解决方案--------------------
帮你顶起来~~~
------解决方案--------------------
产生一个1到4的随机数吧,应该差不多 !
------解决方案--------------------
Random r = new Random();
int i1 = r.Next(4);
//产生一到四的随机数
------解决方案--------------------
String s[] = {"gequ1","gequ2","gequ3","gequ4"};
List<string> AList = new List<string>();

while(true)
{
int a = new Random(); //忘了Java里面怎么写了,就是得到一个随机数
int ayu = a%4; //取余数 


if(!AList.contain(s[ayu]))//判断得到随即顺序的数组是否已经含有
{
AList.add(s[ayu]);
}

if(AList.Lenth == 4)
{
break;
}
}

取3个元素 只要把"AList.Lenth == 4" 改成 "AList.Lenth == 3"
------解决方案--------------------
Arraylist很好很强大
------解决方案--------------------
帮顶……
------解决方案--------------------
首先你这个所谓的${songs}应该是从java代码得到的,为什么不能得到以前就在java代码里随机处理(打乱顺序)一下,再扔到页面作显示呢?先说一句多余的话:如果是想把页面的列表拿到java代码中,一般会采取的到数组,java中循环得到的方式。
话不多说(这废话就不少了),随机处理代码如下,主要思路是ArrayList(有顺序)配合HashSet(值不可重复)实现,楼主仅做参考:

String[] s = {"gequ1","gequ2","gequ3","gequ4"};
int length = 3;
List<String> sList = new ArrayList<String>();
if(s != null) {
if(s.length > length) {
Set<Integer> hs = new HashSet<Integer>();
Random r = new Random();
int random = 0;
while(hs.size() < length) {
random = r.nextInt(s.length);
hs.add(random);
}
Iterator<Integer> it = hs.iterator();
while(it.hasNext()) {
sList.add(s[it.next()]);
}
} else {
sList = Arrays.asList(s);
Collections.shuffle(sList); 
}
}
for(String str : sList) {
System.out.println(str);
  相关解决方案