如何使用Math.Random显示数组列表中的一个项目,同时排除发现等于的项目?此代码搜索链接列表数组,以查找它是否与字符串数组中的任何项匹配,如果是,它将从字符串数组中打印一个尚未在链接列表中的随机元素?
public static void pagesYouMayLike(LinkedList[] likes, int index, String [] likeArray){
for(int i=0; i<likes[index].size(); i++){
for(int j=0; j<5; j++ ){
if(likes[index].listIterator(i).next().equals(likeArray[j])){
int idx = new Random().nextInt(likeArray.length);
System.out.println(likeArray[idx]);
}//if
}//for
}//for
}//pages you may like
答案 0 :(得分:0)
尝试这样做:
if(likes[index].listIterator(i).next().equals(likeArray[j])){
int idx = new Random().nextInt(likeArray.length);
for(int i =0; i< likes.size(); i++){ //traverse through the linked list array
if(likeArray[idx] != likes[i]){ // and check to see if this is a unique string.
System.out.println(likeArray[idx]);
break;
}else{
idx = new Random().nextInt(likeArray.length); //pick another random string
}
}
}//if
将所选的随机字符串与链接列表数组进行比较,以查看它是否唯一。如果它是它应该打印出来并打破循环。你可能需要在for循环中使用迭代器,但我希望你能得到这个想法。
答案 1 :(得分:0)
而不是担心迭代器,使用for-each循环会容易得多:
for(String s : likes) {
if (Arrays.asList(likeArray).contains(s)) {
int index = (new Random()).nextInt(likeArray.length);
System.out.println(likeArray[index]);
}
}
如果您只想显示一个随机值,只需在找到随机值后在循环中放置一个中断。