如何从转换为列表的数组中获取7个随机元素?

时间:2014-05-01 14:34:24

标签: java arrays list random

public static String doDraw(String cardName[], int deckSize){
    int counter, n;
    String list;

    List<Cin> cardList = Arrays.asList(cardName);
Collections.shuffle(cardList);
    ? cardList = cardList.get(7);

    System.out.println(cardList);
}

所以我似乎无法获得随机获取代码的正确方法。该程序需要一副牌并绘制7张随机牌以模拟第一手牌。我把数组放到了一个列表中并且已经洗了它。我现在还不是100%肯定能够获得7张随机牌。

4 个答案:

答案 0 :(得分:0)

使用for循环并打印洗牌列表中的第一个/最后7个项目...

答案 1 :(得分:0)

改组后使用cardList.subList(0,7)

ArrayList的get(index)只返回上述索引处的一个元素。如果需要7使用subList()。如果你只想要一个你不需要随机播放..随机使用

java.util.Random random = new Random();
cardList.get(random.nextInt(cardList.size()));

答案 2 :(得分:0)

使用for或while循环并打印项目,您也可以使用增强的for循环

for(int variable : cardList)
{
  System.out.print(variable + "\t");
}

答案 3 :(得分:0)

在列表中移动元素之后。您必须打印它们或创建前几个元素的字符串。我在列表中创建前7个元素的字符串,但您可以从begning或从结尾开始访问列表。

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CardShuffle {
    String cardName[] = {"first", "second", "third", "forth", "sixth",
            "seventh", "eight", "ninth", "tenth", "eleventh"};

    public static void main(String[] args) {
        CardShuffle card = new CardShuffle();
        for (int i = 0; i < 5; i++) {
            System.out.println(doDraw(card.cardName, 7));
        }
    }

    public static String doDraw(String cardName[], int length) {
        List<String> cardList = Arrays.asList(cardName);
        Collections.shuffle(cardList);
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < length; i++) {
            result = result.append(cardList.get(i) + " ");
        }
        return result.toString();
    }
}