【问题标题】:Display one item from String Array and excluding one item using Math.Random显示字符串数组中的一项并使用 Math.Random 排除一项
【发布时间】:2014-06-11 00:08:11
【问题描述】:

如何使用 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

【问题讨论】:

    标签: java arrays random linked-list


    【解决方案1】:

    尝试这样做:

     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 循环中使用迭代器,但我希望您明白这一点。

    【讨论】:

    • 关于如何确保一个数字只生成一次的任何想法?
    • @user3605306 我想你可以跟踪生成的数字并将它们放入一个数组中,然后比较生成的新数字是否与数组中的数字相同,如果相同则生成一个新数字号码。
    【解决方案2】:

    不用担心迭代器,使用 for-each 循环会容易得多:

    for(String s : likes) {
        if (Arrays.asList(likeArray).contains(s)) {
            int index = (new Random()).nextInt(likeArray.length);
            System.out.println(likeArray[index]);
        }
    }
    

    如果只想显示单个随机值,只需在找到随机值后在循环中打断即可。

    【讨论】:

      猜你喜欢
      • 2017-05-03
      • 2013-11-06
      • 2015-01-12
      • 2018-05-14
      • 2020-08-24
      • 2014-04-29
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多